Updated ImageMediaFactory to support png transparency

Updated UmbracoFile to remove '.' from gif extension check
This commit is contained in:
Matt@MBP13-PC
2012-08-27 08:01:51 -01:00
parent f18e59575f
commit 38d3d6b575
2 changed files with 10 additions and 11 deletions

View File

@@ -245,7 +245,7 @@ namespace umbraco.cms.businesslogic.Files
// Copy metadata // Copy metadata
var imageEncoders = ImageCodecInfo.GetImageEncoders(); var imageEncoders = ImageCodecInfo.GetImageEncoders();
ImageCodecInfo codec = null; ImageCodecInfo codec = null;
if (Extension == "png" || Extension == ".gif") if (Extension.ToLower() == "png" || Extension.ToLower() == "gif")
codec = imageEncoders.Single(t => t.MimeType.Equals("image/png")); codec = imageEncoders.Single(t => t.MimeType.Equals("image/png"));
else else
codec = imageEncoders.Single(t => t.MimeType.Equals("image/jpeg")); codec = imageEncoders.Single(t => t.MimeType.Equals("image/jpeg"));

View File

@@ -54,10 +54,10 @@ namespace umbraco.cms.businesslogic.media
// Generate thumbnail // Generate thumbnail
var thumbDestFilePath = Path.Combine(Path.GetDirectoryName(destFilePath), Path.GetFileNameWithoutExtension(destFilePath) + "_thumb"); 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 // Generate additional thumbnails based on PreValues set in DataTypeDefinition uploadField
GenerateAdditionalThumbnails(image, fileWidth, fileHeight, thumbDestFilePath); GenerateAdditionalThumbnails(image, fileWidth, fileHeight, ext, thumbDestFilePath);
image.Dispose(); image.Dispose();
@@ -67,7 +67,7 @@ namespace umbraco.cms.businesslogic.media
media.Save(); 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"); var uploadFieldDataTypeId = new Guid("5032a6e6-69e3-491d-bb28-cd31cd11086c");
@@ -94,14 +94,14 @@ namespace umbraco.cms.businesslogic.media
var thumbnailSizes = thumbnails.Split(";".ToCharArray()); var thumbnailSizes = thumbnails.Split(";".ToCharArray());
foreach (var thumb in thumbnailSizes.Where(thumb => thumb != "")) 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"); 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 // Generate thumbnailee
var fx = (float)fileWidth / maxWidthHeight; var fx = (float)fileWidth / maxWidthHeight;
@@ -132,11 +132,10 @@ namespace umbraco.cms.businesslogic.media
// Copy metadata // Copy metadata
var codecs = ImageCodecInfo.GetImageEncoders(); var codecs = ImageCodecInfo.GetImageEncoders();
ImageCodecInfo codec = null; ImageCodecInfo codec = null;
for (var i = 0; codec == null && i < codecs.Length; i++) if (ext.ToLower() == "png" || ext.ToLower() == "gif")
{ codec = codecs.Single(t => t.MimeType.Equals("image/png"));
if (codecs[i].MimeType.Equals("image/jpeg")) else
codec = codecs[i]; codec = codecs.Single(t => t.MimeType.Equals("image/jpeg"));
}
// Set compresion ratio to 90% // Set compresion ratio to 90%
var ep = new EncoderParameters(); var ep = new EncoderParameters();