我的源图像是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小了很多,仍然看起来很不错。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top