public IActionResult FetchThumbnail(string thumbnailKey) { long thumbnailId = 0L; IThumbnail thumbnail = null; try { if (long.TryParse(thumbnailKey, out thumbnailId)) { thumbnail = thumbnailRepository.Load(thumbnailId); } else { thumbnail = thumbnailRepository.FindByKey(thumbnailKey).FirstOrDefault(); } } catch (Exception) { // サムネイルが正常に取得できない場合は、常にnullとする。 thumbnail = null; } // リソースの有効期限等を決定する //DateTimeOffset now = DateTime.Now; //var etag = new EntityTagHeaderValue("\"" + Guid.NewGuid().ToString() + "\""); if (thumbnail == null) { System.Reflection.Assembly assm = System.Reflection.Assembly.GetExecutingAssembly(); string filePath = string.Format("Foxpict.Service.Web.Assets.Icon.UI.Article3.png"); return(new FileStreamResult(assm.GetManifestResourceStream(filePath), "image/png")); } return(new FileContentResult(thumbnail.BitmapBytes, thumbnail.MimeType)); }
public IActionResult FetchThumbnail(string thumbnailKey) { long thumbnailId = 0L; IThumbnail thumbnail = null; if (long.TryParse(thumbnailKey, out thumbnailId)) { thumbnail = thumbnailRepository.Load(thumbnailId); } else { thumbnail = thumbnailRepository.FindByKey(thumbnailKey).FirstOrDefault(); } if (thumbnail == null) { throw new ApplicationException(string.Format("サムネイル画像({0})が見つかりません", thumbnailKey)); } // リソースの有効期限等を決定する //DateTimeOffset now = DateTime.Now; //var etag = new EntityTagHeaderValue("\"" + Guid.NewGuid().ToString() + "\""); return(new FileContentResult(thumbnail.BitmapBytes, thumbnail.MimeType)); }
/// <summary> /// サムネイルを生成します /// </summary> public void Do() { try { using (MemoryStream memoryStream = new MemoryStream()) { this._ImageSource.SaveAsPng(memoryStream); string mimeType = "image/png"; if (string.IsNullOrEmpty(_rebuildThumbnailKey)) { string key = null; while (key == null) { var tal = RandomAlphameric.RandomAlphanumeric(20); var r = _thumbnailRepository.FindByKey(tal); if (r.Count() == 0) { key = tal; } foreach (var p in r) { if (p.ThumbnailType != _ThumbnailType) { key = tal; } } } var thumbnail = _thumbnailRepository.New(); thumbnail.ThumbnailKey = key; thumbnail.ThumbnailType = _ThumbnailType; thumbnail.MimeType = mimeType; thumbnail.BitmapBytes = memoryStream.ToArray(); _ThumbnailKey = key; } else { var thumbnailQue = _thumbnailRepository.FindByKey(_rebuildThumbnailKey); // サムネイルタイプのエンティティが存在する場合、trueをセットする。 bool isThumbnailSave = false; foreach (var prop in thumbnailQue) { if (prop.ThumbnailType == _ThumbnailType) { prop.BitmapBytes = memoryStream.ToArray(); isThumbnailSave = true; } } if (!isThumbnailSave) { // 指定したサムネイルタイプのエンティティを、 // 新規作成する。 var thumbnail_NewThumbnailType = _thumbnailRepository.New(); thumbnail_NewThumbnailType.ThumbnailKey = _rebuildThumbnailKey; thumbnail_NewThumbnailType.ThumbnailType = _ThumbnailType; thumbnail_NewThumbnailType.BitmapBytes = memoryStream.ToArray(); _ThumbnailKey = _rebuildThumbnailKey; } else { _ThumbnailKey = _rebuildThumbnailKey; } } } } catch (NotSupportedException expr) { _logger.Warn(expr.Message); } }