/// <summary> /// Gets the image cache tag. /// </summary> /// <param name="item">The item.</param> /// <param name="image">The image.</param> /// <param name="imageEnhancers">The image enhancers.</param> /// <returns>Guid.</returns> /// <exception cref="System.ArgumentNullException">item</exception> public string GetImageCacheTag(IHasImages item, ItemImageInfo image, List<IImageEnhancer> imageEnhancers) { if (item == null) { throw new ArgumentNullException("item"); } if (imageEnhancers == null) { throw new ArgumentNullException("imageEnhancers"); } if (image == null) { throw new ArgumentNullException("image"); } var originalImagePath = image.Path; var dateModified = image.DateModified; var imageType = image.Type; // Optimization if (imageEnhancers.Count == 0) { return (originalImagePath + dateModified.Ticks).GetMD5().ToString("N"); } // Cache name is created with supported enhancers combined with the last config change so we pick up new config changes var cacheKeys = imageEnhancers.Select(i => i.GetConfigurationCacheKey(item, imageType)).ToList(); cacheKeys.Add(originalImagePath + dateModified.Ticks); return string.Join("|", cacheKeys.ToArray()).GetMD5().ToString("N"); }
private async Task<Tuple<string, DateTime>> GetEnhancedImage(ItemImageInfo image, IHasImages item, int imageIndex, List<IImageEnhancer> enhancers) { var originalImagePath = image.Path; var dateModified = image.DateModified; var imageType = image.Type; try { var cacheGuid = GetImageCacheTag(item, image, enhancers); // Enhance if we have enhancers var ehnancedImagePath = await GetEnhancedImageInternal(originalImagePath, item, imageType, imageIndex, enhancers, cacheGuid).ConfigureAwait(false); // If the path changed update dateModified if (!ehnancedImagePath.Equals(originalImagePath, StringComparison.OrdinalIgnoreCase)) { return GetResult(ehnancedImagePath); } } catch (Exception ex) { _logger.Error("Error enhancing image", ex); } return new Tuple<string, DateTime>(originalImagePath, dateModified); }
/// <summary> /// Gets the image cache tag. /// </summary> /// <param name="item">The item.</param> /// <param name="image">The image.</param> /// <returns>Guid.</returns> /// <exception cref="System.ArgumentNullException">item</exception> public string GetImageCacheTag(IHasImages item, ItemImageInfo image) { if (item == null) { throw new ArgumentNullException("item"); } if (image == null) { throw new ArgumentNullException("image"); } var supportedEnhancers = GetSupportedEnhancers(item, image.Type); return GetImageCacheTag(item, image, supportedEnhancers.ToList()); }
public ImageSize GetImageSize(ItemImageInfo info) { return GetImageSize(info.Path, info.DateModified, false); }
private string GetImageCacheTag(BaseItem item, ItemImageInfo image) { try { return _imageProcessor.GetImageCacheTag(item, image); } catch (Exception ex) { _logger.ErrorException("Error getting {0} image info for {1}", ex, image.Type, image.Path); return null; } }
public ItemImageInfo ItemImageInfoFromValueString(string value) { var parts = value.Split(new[] { '*' }, StringSplitOptions.None); var image = new ItemImageInfo(); image.Path = parts[0]; image.DateModified = new DateTime(long.Parse(parts[1], CultureInfo.InvariantCulture), DateTimeKind.Utc); image.Type = (ImageType)Enum.Parse(typeof(ImageType), parts[2], true); image.IsPlaceholder = string.Equals(parts[3], true.ToString(), StringComparison.OrdinalIgnoreCase); return image; }
public string ToValueString(ItemImageInfo image) { var delimeter = "*"; return (image.Path ?? string.Empty) + delimeter + image.DateModified.Ticks.ToString(CultureInfo.InvariantCulture) + delimeter + image.Type + delimeter + image.IsPlaceholder; }