gpt4 book ai didi

c# - 为 Web 应用程序创建合理文件大小的缩略图

转载 作者:行者123 更新时间:2023-11-30 16:36:39 25 4
gpt4 key购买 nike

我的源图像是 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;
}

最佳答案

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

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

关于c# - 为 Web 应用程序创建合理文件大小的缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/582162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com