C# 为什么';生成的水印图像比原始图像大很多?
我使用下面的代码生成带水印的图像,问题是,生成的文件总是比原始文件大,即使生成的文件的尺寸更小,例如: original.jpg(1920*1440)=1.11MB generated.jpg(960*720)=1.77MB 我错过什么了吗 C#: VB:C# 为什么';生成的水印图像比原始图像大很多?,c#,vb.net,image,watermark,drawimage,C#,Vb.net,Image,Watermark,Drawimage,我使用下面的代码生成带水印的图像,问题是,生成的文件总是比原始文件大,即使生成的文件的尺寸更小,例如: original.jpg(1920*1440)=1.11MB generated.jpg(960*720)=1.77MB 我错过什么了吗 C#: VB: JPEG格式有一个质量因子。您可以定义结果图像的压缩量。压缩得越多,质量就越差。您可以在Save方法中设置质量级别 请看下面的示例: 不同质量级别的示例可在此处找到:JPEG格式有一个质量因子。您可以定义结果图像的压缩量。压缩得越多,质量就
JPEG格式有一个质量因子。您可以定义结果图像的压缩量。压缩得越多,质量就越差。您可以在
Save
方法中设置质量级别
请看下面的示例:
不同质量级别的示例可在此处找到:JPEG格式有一个质量因子。您可以定义结果图像的压缩量。压缩得越多,质量就越差。您可以在
Save
方法中设置质量级别
请看下面的示例:
不同质量等级的样品可在此处找到:您需要指定质量,例如:
var jpgEncoder = GetEncoder(ImageFormat.Jpeg);
var jpgParameters = new EncoderParameters(1);
jpgParameters.Param[0] = new EncoderParameter(Encoder.Quality, 80L);
indexedImage.Save(target + "\\" + NewName, jpgEncoder, jpgParameters);
使用这种方法:
private ImageCodecInfo GetEncoder(ImageFormat format)
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
foreach (ImageCodecInfo codec in codecs)
{
if (codec.FormatID == format.Guid)
return codec;
}
return null;
}
您需要指定质量,例如:
var jpgEncoder = GetEncoder(ImageFormat.Jpeg);
var jpgParameters = new EncoderParameters(1);
jpgParameters.Param[0] = new EncoderParameter(Encoder.Quality, 80L);
indexedImage.Save(target + "\\" + NewName, jpgEncoder, jpgParameters);
使用这种方法:
private ImageCodecInfo GetEncoder(ImageFormat format)
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
foreach (ImageCodecInfo codec in codecs)
{
if (codec.FormatID == format.Guid)
return codec;
}
return null;
}
我添加了:
g.InterpolationMode=InterpolationMode.Low
大小还是一样的,1.77MB!我添加了:g.InterpolationMode=InterpolationMode.Low
大小还是一样的,1.77MB@费罗:这实际上超出了我的“生产代码”,但谢谢;-)。您应该始终在回答中包含代码的关键部分,因为“链接可能会消失”…@fero:这实际上超出了我的“生产代码”,但谢谢;-)。你应该在回答中包含代码的关键部分,因为“链接可能会消失”。。。