Exemplo n.º 1
0
        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;
            }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 10
0
 protected virtual bool TryGetOutputFormat(HttpRequestBase request, IFormatInfo originalFormat, IFormatInfoProvider formatInfoProvider, out IFormatInfo outputFormat)
 {
     outputFormat = originalFormat;
     return(true);
 }
Exemplo n.º 11
0
        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);
            }
        }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
 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);
        }