/// <summary> /// サムネイル作成 /// </summary> /// <param name="thumbnailhash">既存のサムネイルを、baseImageFilePathで生成しなおしたい場合、 /// 既存のサムネイル情報を示すキーを指定します。それ以外は、NULLを指定します。</param> /// <param name="baseImageFilePath">サムネイル生成元の画像ファイルパス</param> /// <returns></returns> public string BuildThumbnail(string thumbnailhash, string baseImageFilePath) { if (thumbnailhash != null) { mLogger.Info("サムネイル({ThumbnailHash})の作成を開始します", thumbnailhash); } else { mLogger.Info("サムネイル({baseImageFilePath})の作成を開始します", baseImageFilePath); } string _ThumbnailKey = null; Byte[] imageByte = null; imageByte = LoadImageBytes(baseImageFilePath); if (imageByte == null) { throw new ApplicationException(); // 画像ファイルを取得できなかった。 } var resizedImage1 = CreateImage(imageByte, 300, 0); // 生成するサムネイル画像の大きさは「300」(TODO?) // サムネイル種類別にすべてのサムネイルを生成する foreach (ThumbnailType thmbType in Enum.GetValues(typeof(ThumbnailType))) { ThumbnailInfoAttribute[] infos = (ThumbnailInfoAttribute[])thmbType.GetType().GetField(thmbType.ToString()).GetCustomAttributes(typeof(ThumbnailInfoAttribute), false); if (infos.Length > 0) { var @attr = infos[0]; var resizedImage = CreateImage(imageByte, @attr.Width, @attr.Height); // 生成するサムネイル画像の大きさは「300」(TODO?) using (Image <Rgba32> image = Image.Load(imageByte)) { image.Mutate(x => x.Resize(@attr.Width, @attr.Height)); var invoker = new ThumbnailEncodingInvoker(thumbnailhash, image, thmbType, thumbnailRepository); invoker.Do(); _ThumbnailKey = invoker.ThumbnailKey; thumbnailhash = _ThumbnailKey; } } } //thumbnailRepository.Save (); return(_ThumbnailKey); }