【发布时间】:2014-04-02 18:27:16
【问题描述】:
我正在使用 C#。
我有一张 jpeg 图片。
我通过降低图像质量来压缩它,所以:
byte[] data = SaveJpeg(myJPEG, 60);
public byte[] SaveJpeg(Image img, int quality)
{
byte[] data = null;
// Encoder parameter for image quality
EncoderParameter qualityParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
// Jpeg image codec
ImageCodecInfo jpegCodec = GetEncoderInfo("image/jpeg");
EncoderParameters encoderParams = new EncoderParameters(1);
encoderParams.Param[0] = qualityParam;
using (MemoryStream ms = new MemoryStream())
{
img.Save(ms, jpegCodec, encoderParams);
data = ms.ToArray();
img.Dispose();
}
return data;
}
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;
}
我的图片按预期缩小了。
这个特殊的图像“看起来”质量很高,压缩后返回 20818(以字节为单位)。但是对于具有相同分辨率(即宽度 + 高度)但“看起来”较差的图像的其他图像,返回的字节大小要小得多 - 例如 9000 字节。
我能否获得一个一致的进程,该进程将返回“大致”相同数量的字节?图片中影响压缩大小的因素有哪些?
【问题讨论】:
标签: c# image-processing