/// <summary> /// Returns the images thumb path as is plus query (required for uploaded images) /// </summary> /// <param name="file">Image file to get thumbnail for</param> /// <param name="query"></param> /// <returns></returns> private string GetCachedImagePath(IFile file, ProcessImageQuery query) { if (!_imageProcessor.IsSupportedImage(file.Name)) { throw new InvalidOperationException("Thumbnails for '{0}' files are not supported".FormatInvariant(file.Extension)); } // TODO: (mc) prevent creating thumbs for thumbs AND check equality of source and target var imageFileName = String.Concat(file.Title, query.CreateHash()); var extension = (query.GetResultExtension() ?? file.Extension).EnsureStartsWith(".").ToLower(); var path = _fileSystem.Combine(file.Directory, imageFileName + extension); return(path.TrimStart('/', '\\')); }
public virtual CachedImageResult Get(int?pictureId, string seoFileName, string extension, ProcessImageQuery query = null) { Guard.NotEmpty(extension, nameof(extension)); extension = query?.GetResultExtension() ?? extension.TrimStart('.').ToLower(); var imagePath = GetCachedImagePath(pictureId, seoFileName, extension, query); var file = _fileSystem.GetFile(BuildPath(imagePath)); var result = new CachedImageResult(file) { Path = imagePath, Extension = extension, IsRemote = _fileSystem.IsCloudStorage }; return(result); }
public virtual CachedImage Get(int?mediaFileId, MediaPathData data, ProcessImageQuery query = null) { Guard.NotNull(data, nameof(data)); var resultExtension = query?.GetResultExtension(); if (resultExtension != null) { data.Extension = resultExtension; } var imagePath = GetCachedImagePath(mediaFileId, data, query); var file = _fileSystem.GetFile(BuildPath(imagePath)); var result = new CachedImage(file) { Path = imagePath, Extension = data.Extension, IsRemote = _fileSystem.IsCloudStorage }; return(result); }