public DynamicMediaHandler() { var storageRoot = new DirectoryInfo( HttpContext.Current.Server.MapPath( ConfigurationManager.AppSettings[ "StorageRoot" ] ) ); var cacheRoot = new DirectoryInfo( HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["CacheRoot"])); var etagCalculator = new WeakFileInfoETagCalculator(); m_mediaCache = new FileSystemMediaCache(etagCalculator, cacheRoot); //m_mediaCache = new NullMediaCache(); m_storageBackend = new FileSystemStorageBackend( storageRoot, etagCalculator ); m_mediaTransformerFactory = new CompositeMediaTransformerFactory( new XmlExifImageInfoMediaTransformer(), new JsonExifImageInfoMediaTransformer(), new ImageMediaTransformerFactory(), new CssLessMediaTransformerFactory(), new CombineCssMediaTransformerFactory(), new EmbedAsBase64CssMediaTransformerFactory(), new CssMinifyingMediaTransformerFactory(), new JavascriptMinifyingMediaTransformerFactory(), new MarkdownMediaTransformerFactory() ); m_formatInfoProvider = new FormatInfoProvider( (FormatInfoResolverConfiguration) ConfigurationManager.GetSection( "dynamicMediaFormatMappings" ) ); //m_formatInfoProvider = new RegistryFormatInfoProvider(null); }
public bool TryGetContentType(IFormatInfo originalFormat, HttpRequestBase request, IFormatInfoProvider formatInfoProvider, out IFormatInfo transformedFormat, out BitmapEncoder encoder) { var format = request.QueryString["format"]; if (string.IsNullOrEmpty(format)) { format = originalFormat.Extension.Substring(1); } switch (format.ToLower()) { case "jpg": int quality; if (!int.TryParse(request.QueryString["quality"], out quality) || quality <= 0 || quality > 100) { quality = 80; } transformedFormat = formatInfoProvider.ResolveFromExtension(".jpg"); encoder = new JpegBitmapEncoder { QualityLevel = quality }; return transformedFormat != null; case "png": transformedFormat = formatInfoProvider.ResolveFromExtension(".png"); encoder = new PngBitmapEncoder(); return transformedFormat != null; default: transformedFormat = null; encoder = null; return false; } }
public DynamicMediaHandler() { var storageRoot = new DirectoryInfo(HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["StorageRoot"])); var cacheRoot = new DirectoryInfo(HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["CacheRoot"])); var etagCalculator = new WeakFileInfoETagCalculator(); m_mediaCache = new FileSystemMediaCache(etagCalculator, cacheRoot); //m_mediaCache = new NullMediaCache(); m_storageBackend = new FileSystemStorageBackend(storageRoot, etagCalculator); m_mediaTransformerFactory = new CompositeMediaTransformerFactory( new XmlExifImageInfoMediaTransformer(), new JsonExifImageInfoMediaTransformer(), new ImageMediaTransformerFactory(), new CssLessMediaTransformerFactory(), new CombineCssMediaTransformerFactory(), new EmbedAsBase64CssMediaTransformerFactory(), new CssMinifyingMediaTransformerFactory(), new JavascriptMinifyingMediaTransformerFactory(), new MarkdownMediaTransformerFactory() ); m_formatInfoProvider = new FormatInfoProvider((FormatInfoResolverConfiguration)ConfigurationManager.GetSection("dynamicMediaFormatMappings")); //m_formatInfoProvider = new RegistryFormatInfoProvider(null); }
public bool TryCreateTransformer(HttpRequestBase request, IFormatInfo originalFormat, IFormatInfoProvider formatInfoProvider, out IMediaTransformer mediaTransformer) { var compositeTransformer = new CompositeMediaTransformer(); var factories = _transformerFactories.ToList(); AddTransformerToComposite(request, originalFormat, compositeTransformer, factories, formatInfoProvider); mediaTransformer = compositeTransformer; return compositeTransformer.Count > 0; }
protected override bool TryGetOutputFormat(HttpRequestBase request, IFormatInfo originalFormat, IFormatInfoProvider formatInfoProvider, out IFormatInfo outputFormat) { var format = request.QueryString["format"]; if (string.Equals(format, "exif-xml", StringComparison.InvariantCultureIgnoreCase)) { outputFormat = formatInfoProvider.ResolveFromExtension(".xml"); return outputFormat != null; } outputFormat = null; return false; }
private static void AddTransformerToComposite(HttpRequestBase request, IFormatInfo originalFormat, CompositeMediaTransformer compositeTransformer, List<IMediaTransformerFactory> factories, IFormatInfoProvider formatInfoProvider) { foreach (var transformerFactory in factories) { IMediaTransformer transformer; if (transformerFactory.TryCreateTransformer(request, originalFormat, formatInfoProvider, out transformer)) { compositeTransformer.AddMediaTransformer(transformer); factories.Remove(transformerFactory); AddTransformerToComposite( request, transformer.OutputFormat, compositeTransformer, factories, formatInfoProvider); return; } } }
public bool TryCreateTransformer(HttpRequestBase request, IFormatInfo originalFormat, IFormatInfoProvider formatInfoProvider, out IMediaTransformer mediaTransformer) { var transforms = GetBitmapTransforms(request.QueryString).ToArray(); if (!transforms.Any()) { mediaTransformer = null; return false; } IFormatInfo outputFormat; BitmapEncoder encoder; if (!TryGetContentType(originalFormat, request, formatInfoProvider, out outputFormat, out encoder)) { mediaTransformer = null; return false; } mediaTransformer = new ImageMediaTransformer(transforms, encoder, outputFormat); return true; }
public bool TryCreateTransformer(HttpRequestBase request, IFormatInfo originalFormat, IFormatInfoProvider formatInfoProvider, out IMediaTransformer mediaTransformer) { if (!CanHandleFormat(originalFormat)) { mediaTransformer = null; return false; } if(!IsValidFilePath(request.Url.AbsolutePath)) { mediaTransformer = null; return false; } IFormatInfo outputFormat; if( !TryGetOutputFormat(request, originalFormat, formatInfoProvider, out outputFormat) ) { mediaTransformer = null; return false; } mediaTransformer = new MediaTransformer(outputFormat, this); return true; }
public bool TryCreateTransformer(HttpRequestBase request, IFormatInfo originalFormat, IFormatInfoProvider formatInfoProvider, out IMediaTransformer mediaTransformer) { if (!CanHandleFormat(originalFormat)) { mediaTransformer = null; return(false); } if (!IsValidFilePath(request.Url.AbsolutePath)) { mediaTransformer = null; return(false); } IFormatInfo outputFormat; if (!TryGetOutputFormat(request, originalFormat, formatInfoProvider, out outputFormat)) { mediaTransformer = null; return(false); } mediaTransformer = new MediaTransformer(outputFormat, this); return(true); }
protected virtual bool TryGetOutputFormat(HttpRequestBase request, IFormatInfo originalFormat, IFormatInfoProvider formatInfoProvider, out IFormatInfo outputFormat) { outputFormat = originalFormat; return(true); }
public bool TryGetContentType(IFormatInfo originalFormat, HttpRequestBase request, IFormatInfoProvider formatInfoProvider, out IFormatInfo transformedFormat, out BitmapEncoder encoder) { var format = request.QueryString["format"]; if (string.IsNullOrEmpty(format)) { format = originalFormat.Extension.Substring(1); } switch (format.ToLower()) { case "jpg": int quality; if (!int.TryParse(request.QueryString["quality"], out quality) || quality <= 0 || quality > 100) { quality = 80; } transformedFormat = formatInfoProvider.ResolveFromExtension(".jpg"); encoder = new JpegBitmapEncoder { QualityLevel = quality }; return(transformedFormat != null); case "png": transformedFormat = formatInfoProvider.ResolveFromExtension(".png"); encoder = new PngBitmapEncoder(); return(transformedFormat != null); default: transformedFormat = null; encoder = null; return(false); } }
public bool TryCreateTransformer(HttpRequestBase request, IFormatInfo originalFormat, IFormatInfoProvider formatInfoProvider, out IMediaTransformer mediaTransformer) { var transforms = GetBitmapTransforms(request.QueryString).ToArray(); if (!transforms.Any()) { mediaTransformer = null; return(false); } IFormatInfo outputFormat; BitmapEncoder encoder; if (!TryGetContentType(originalFormat, request, formatInfoProvider, out outputFormat, out encoder)) { mediaTransformer = null; return(false); } mediaTransformer = new ImageMediaTransformer(transforms, encoder, outputFormat); return(true); }
protected virtual bool TryGetOutputFormat(HttpRequestBase request, IFormatInfo originalFormat, IFormatInfoProvider formatInfoProvider, out IFormatInfo outputFormat) { outputFormat = originalFormat; return true; }
protected override bool TryGetOutputFormat(HttpRequestBase request, IFormatInfo originalFormat, IFormatInfoProvider formatInfoProvider, out IFormatInfo outputFormat) { var format = request.QueryString["format"]; if (string.Equals(format, "exif-json", StringComparison.InvariantCultureIgnoreCase)) { outputFormat = formatInfoProvider.ResolveFromExtension(".json"); return(outputFormat != null); } outputFormat = null; return(false); }
private static void AddTransformerToComposite(HttpRequestBase request, IFormatInfo originalFormat, CompositeMediaTransformer compositeTransformer, List <IMediaTransformerFactory> factories, IFormatInfoProvider formatInfoProvider) { foreach (var transformerFactory in factories) { IMediaTransformer transformer; if (transformerFactory.TryCreateTransformer(request, originalFormat, formatInfoProvider, out transformer)) { compositeTransformer.AddMediaTransformer(transformer); factories.Remove(transformerFactory); AddTransformerToComposite(request, transformer.OutputFormat, compositeTransformer, factories, formatInfoProvider); return; } } }
public bool TryCreateTransformer(HttpRequestBase request, IFormatInfo originalFormat, IFormatInfoProvider formatInfoProvider, out IMediaTransformer mediaTransformer) { var compositeTransformer = new CompositeMediaTransformer(); var factories = _transformerFactories.ToList(); AddTransformerToComposite(request, originalFormat, compositeTransformer, factories, formatInfoProvider); mediaTransformer = compositeTransformer; return(compositeTransformer.Count > 0); }