From 38d3d6b57504dc4acfc47f631229cc5cc33a5dc3 Mon Sep 17 00:00:00 2001 From: "Matt@MBP13-PC" Date: Mon, 27 Aug 2012 08:01:51 -0100 Subject: [PATCH] Updated ImageMediaFactory to support png transparency Updated UmbracoFile to remove '.' from gif extension check --- .../businesslogic/Files/UmbracoFile.cs | 2 +- .../media/UmbracoImageMediaFactory.cs | 19 +++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/umbraco.cms/businesslogic/Files/UmbracoFile.cs b/src/umbraco.cms/businesslogic/Files/UmbracoFile.cs index b42f55dcb8..b084c4fe83 100644 --- a/src/umbraco.cms/businesslogic/Files/UmbracoFile.cs +++ b/src/umbraco.cms/businesslogic/Files/UmbracoFile.cs @@ -245,7 +245,7 @@ namespace umbraco.cms.businesslogic.Files // Copy metadata var imageEncoders = ImageCodecInfo.GetImageEncoders(); ImageCodecInfo codec = null; - if (Extension == "png" || Extension == ".gif") + if (Extension.ToLower() == "png" || Extension.ToLower() == "gif") codec = imageEncoders.Single(t => t.MimeType.Equals("image/png")); else codec = imageEncoders.Single(t => t.MimeType.Equals("image/jpeg")); diff --git a/src/umbraco.cms/businesslogic/media/UmbracoImageMediaFactory.cs b/src/umbraco.cms/businesslogic/media/UmbracoImageMediaFactory.cs index bf014827a3..eec6f81c53 100644 --- a/src/umbraco.cms/businesslogic/media/UmbracoImageMediaFactory.cs +++ b/src/umbraco.cms/businesslogic/media/UmbracoImageMediaFactory.cs @@ -54,10 +54,10 @@ namespace umbraco.cms.businesslogic.media // Generate thumbnail var thumbDestFilePath = Path.Combine(Path.GetDirectoryName(destFilePath), Path.GetFileNameWithoutExtension(destFilePath) + "_thumb"); - GenerateThumbnail(image, 100, fileWidth, fileHeight, thumbDestFilePath + ".jpg"); + GenerateThumbnail(image, 100, fileWidth, fileHeight, ext, thumbDestFilePath + ".jpg"); // Generate additional thumbnails based on PreValues set in DataTypeDefinition uploadField - GenerateAdditionalThumbnails(image, fileWidth, fileHeight, thumbDestFilePath); + GenerateAdditionalThumbnails(image, fileWidth, fileHeight, ext, thumbDestFilePath); image.Dispose(); @@ -67,7 +67,7 @@ namespace umbraco.cms.businesslogic.media media.Save(); } - private void GenerateAdditionalThumbnails(Image image, int fileWidth, int fileHeight, string destFilePath) + private void GenerateAdditionalThumbnails(Image image, int fileWidth, int fileHeight, string ext, string destFilePath) { var uploadFieldDataTypeId = new Guid("5032a6e6-69e3-491d-bb28-cd31cd11086c"); @@ -94,14 +94,14 @@ namespace umbraco.cms.businesslogic.media var thumbnailSizes = thumbnails.Split(";".ToCharArray()); foreach (var thumb in thumbnailSizes.Where(thumb => thumb != "")) { - GenerateThumbnail(image, int.Parse(thumb), fileWidth, fileHeight, + GenerateThumbnail(image, int.Parse(thumb), fileWidth, fileHeight, ext, destFilePath + "_" + thumb + ".jpg"); } } } } - private void GenerateThumbnail(Image image, int maxWidthHeight, int fileWidth, int fileHeight, string thumbnailFileName) + private void GenerateThumbnail(Image image, int maxWidthHeight, int fileWidth, int fileHeight, string ext, string thumbnailFileName) { // Generate thumbnailee var fx = (float)fileWidth / maxWidthHeight; @@ -132,11 +132,10 @@ namespace umbraco.cms.businesslogic.media // Copy metadata var codecs = ImageCodecInfo.GetImageEncoders(); ImageCodecInfo codec = null; - for (var i = 0; codec == null && i < codecs.Length; i++) - { - if (codecs[i].MimeType.Equals("image/jpeg")) - codec = codecs[i]; - } + if (ext.ToLower() == "png" || ext.ToLower() == "gif") + codec = codecs.Single(t => t.MimeType.Equals("image/png")); + else + codec = codecs.Single(t => t.MimeType.Equals("image/jpeg")); // Set compresion ratio to 90% var ep = new EncoderParameters();