【问题标题】:Thumbnail creation of reasonable filesize for web application为 Web 应用程序创建合理文件大小的缩略图
【发布时间】:2010-10-09 14:10:34
【问题描述】:

我的源图像是 2288px x 1712px 和 816kb。当我创建 1024 x 768 的缩略图时,文件大小是高分辨率源的两倍多(1.13mb - 1.8mb,具体取决于使用的方法)。

创建的源图像和缩略图是 .jpg

即使创建 299 x 224 的缩略图也是 180kb,而我在 GIMP 中手动创建的缩略图也是 14kb。

我需要图像看起来不错,所以不能在质量上妥协。

我尝试过 Image.GetThumbnailImage,它创建了一个 1.13mb 的文件,但我读到它会产生意想不到的结果。

大多数文章都说要像这篇文章那样写代码: http://www.codeproject.com/KB/GDI-plus/imageresize.aspx

这给了我一个 1.83mb 的缩略图。

与使用桌面应用程序执行相同操作相比,我应该期望更大的文件大小吗?

我尝试了 16 位而不是 24 位,并注释掉了“高质量”值,但我仍然无法将其低于 1mb。有什么想法吗?

Bitmap bmPhoto = new Bitmap(destWidth, destHeight,PixelFormat.Format24bppRgb);
        bmPhoto.SetResolution(image.HorizontalResolution,image.VerticalResolution);

        Graphics grPhoto = Graphics.FromImage(bmPhoto);

        grPhoto.InterpolationMode = InterpolationMode.HighQualityBicubic;        
        grPhoto.SmoothingMode = SmoothingMode.HighQuality;
        grPhoto.PixelOffsetMode = PixelOffsetMode.HighQuality;
        grPhoto.CompositingQuality = CompositingQuality.HighQuality;

编辑答案

我缺乏压缩。我的 1024 缩略图现在是 112kb。

Encoder qualityEncoder = Encoder.Quality;
//80L is the compression percentage
EncoderParameter ratio = new EncoderParameter(qualityEncoder, 80L);
// Add the quality parameter to the list
EncoderParameters codecParams = new EncoderParameters(1);
codecParams.Param[0] = ratio;

ImageCodecInfo jpegCodecInfo = GetEncoderInfo("image/jpeg");


bmPhoto.Save(Path.Combine(filepath, RenameImage(filename, appendName, replaceWholeString)), jpegCodecInfo, codecParams);


ImageCodecInfo GetEncoderInfo(string mimeType)    
{    
int j;    
ImageCodecInfo[] encoders;    
encoders = ImageCodecInfo.GetImageEncoders();

for(j = 0; j < encoders.Length; ++j)    
{    
if(encoders[j].MimeType.ToUpper() == mimeType.ToUpper())    
return encoders[j];    
}    
return null;    
}

【问题讨论】:

  • 您保存缩略图的文件格式是什么?
  • 添加到问题 - 源和缩略图是 .jpg
  • 请在保存 JPG 的位置添加代码。调整大小的代码看起来是正确的。

标签: c# image resize thumbnails


【解决方案1】:

这听起来像是您没有使用压缩或非常弱的压缩(如 RLE)。试试 PNG、JPG(或无损的 JPG2000)或 GIF。

编辑:如果您使用 JPG,请尝试降低图像质量。 1024x768 的缩略图应该能够比 1 MB 小很多,而且看起来还不错。

【讨论】:

    【解决方案2】:

    位图格式是您的主要问题。与其他格式相比,这将永远是巨大的。位图经过游程编码和未压缩。

    如果您的图像是照片,JPEG 是您的最佳选择。您可以通过很小的文件大小获得出色的视觉质量。如果它们是线条艺术并且没有很多颜色,GIF 也可能是一个不错的选择。有几个很好的图像处理库,例如FreeImage

    编辑:注意到您将 JPEG 转换为 JPEG 的评论...缺乏良好的压缩可能是框架内置图像功能的限制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-12
      • 2014-07-01
      • 2015-01-19
      • 2011-12-11
      • 2014-05-17
      • 1970-01-01
      • 2010-12-18
      • 2013-06-22
      相关资源
      最近更新 更多