缩图建立合理的文件大小的Web应用
-
06-09-2019 - |
题
我的源图像是2288px X 1712px和816kb。当我创建的1024×768的缩略图文件的大小是比双重高分辨率源更多。(1.13MB - 取决于所使用的方法1.8MB)
在源图像和所创建的缩略图被.jpg文件
即使创建299 X 224缩略图是180KB,其中,如果我在手动GIMP创建缩略图它是14KB。
我需要的图像,看起来还不错的质量大小不能妥协。
我试图其中创建的1.13MB文件Image.GetThumbnailImage但我看,它可以创建意外的结果。
大多数文章说,写这样的文章的代码: 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;
修改FOR ANSWER 强>
我是缺乏压缩。我的缩略图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;
}
解决方案
位图格式是你的主要问题。这将永远是与其他格式比较庞大。位图进行运行长度编码和压缩。
如果您的图片照片,JPEG是你最好的选择。你可以用微小的文件大小伟大的视觉质量。如果他们是艺术线条和没有了不少色彩,GIF也可能是一个不错的选择。有几个很好的图像处理库在那里,例如 FreeImage的。
编辑:注意到你要去JPEG到JPEG的评论...缺乏良好的压缩可能是框架的内置图像功能的限制
其他提示
这听起来像你正在使用无压缩或非常弱的一个(像RLE)。尝试PNG,JPG(或JPG2000其可以是无损的)或GIF。
编辑:如果您使用JPG,尽量降低图像质量。 1024×768的缩略图应该能够比1 MB小了很多,仍然看起来很不错。