gpt4 book ai didi

c# - .NET 以与加载时相同的质量保存 jpeg

转载 作者:可可西里 更新时间:2023-11-01 07:58:40 26 4
gpt4 key购买 nike

我有一个 cannon 数码相机,我将它设置为拍摄超精细质量的照片,它输出一个 3 兆大小的 .jpg 文件。如果我在 ASP.NET 中这样加载它(这对于更改它的 dpi 分辨率或裁剪它或其他任何东西很有用)

imgPicture = Image.FromFile(Config.WorkDirectory + this.TempPhotoName);
bmpPicture = new Bitmap(imgPicture);

然后我像这样再次保存它:

bmpModified.Save(Config.WorkDirectory + this.TempPhotoName,System.Drawing.Imaging.ImageFormat.Jpeg);

它输出一个大小只有 700KB 左右的 jpg。存在质量损失。

我也试过这样保存:

bmpPicture.Save(Config.WorkDirectory + this.TempPhotoName, codecJpeg, encparams);

codecJpeg 在哪里

ImageCodecInfo codecJpeg = this.getEncoderInfo("image/jpeg");


private ImageCodecInfo getEncoderInfo(string mimeType)
{
// Get image codecs for all image formats
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();

// Find the correct image codec
for (int i = 0; i < codecs.Length; i++)
if (codecs[i].MimeType == mimeType)
return codecs[i];
return null;
}

和encparams:

EncoderParameters encparams = new EncoderParameters(1);
encparams.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 97L);

这样可以保持尺寸(我怀疑质量),但我是手动输入质量。

我想问:

有没有办法在不硬编码质量值的情况下以与加载时相同的质量保存图像?

提前致谢

最佳答案

听起来您好像知道如何设置质量,您真的只需要知道如何从原始图像获取质量吗?

我怀疑Image.PropertyItems是你的 friend ,如果质量在元数据中开始。 (我不知道 JPEG 编码器中是否有质量标准。)

编辑:我刚刚检查过,我下载的 jpeg 没有任何质量标签。

一个选择可能是计算出文件最终应该有多大才能具有大致相同的质量,然后将其保存多次,进行二进制搜索以计算出最合适的质量。恶心,但它可能会起作用。

我暗暗怀疑没有只保留原始质量设置的方法,尽管我没有很好的理由来怀疑...

关于c# - .NET 以与加载时相同的质量保存 jpeg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1072897/

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