C#处理jpg图片问题之2,保存jpg图片时如何设定图像品质?

pellet 2005-01-19 02:45:20
经常用photoshop,fireworks,acdsee处理图片的朋友,肯定知道这些软件在保存jpg图片时,都有选项可以设定图片品质的.品质高,文件大,比较清晰;品质低,压缩比高,有些模糊.

但是在C#中用Image类的Save()方法,却找不到如何设定品质,而用
bitmap.Save( sourceDir, System.Drawing.Imaging.ImageFormat.Jpeg );
保存后,品质是比较低的,效果很差.

public void Save(string, ImageCodecInfo, EncoderParameters);
这个重载方法,看不懂后两个参数什么意思...

我想保存较高品质的jpeg图像,该怎么做呢?
望高手不啻赐教!
...全文
692 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pellet 2005-01-20
  • 打赏
  • 举报
回复
//衣来伸手,饭来张口啊。还要简单,那“软件开发”这个行业真的是要消亡了......

我指的是这一段
private static ImageCodecInfo GetEncoderInfo(String mimeType)
{
int j;
ImageCodecInfo[] encoders;
encoders = ImageCodecInfo.GetImageEncoders();
for(j = 0; j < encoders.Length; ++j)
if(encoders[j].MimeType == mimeType)
return encoders[j];
return null;
}

ImageCodecInfo.GetImageEncoders()
方法返回的是图像压缩编码的一个数组,为了取得jpg图像编码,竟然要遍历该数组,看MimeType是否和"image/jpeg"相等...
感觉好像有点别扭...

The123(萝卜白菜各有所爱,你是白菜还是萝卜?) 说的是,谢谢
jyu_730 2005-01-19
  • 打赏
  • 举报
回复
不是复杂,我写了注释的哈。可以简画,我只是觉得这样写比较规范哈,
你去查查你不明白的类的具体意思就能理解了哈。
ImageCodecInfo是获取图象的编码器和解码器信息哈。
The123 2005-01-19
  • 打赏
  • 举报
回复
//但是不明白为什么C#要搞的这么复杂..

衣来伸手,饭来张口啊。还要简单,那“软件开发”这个行业真的是要消亡了......
pellet 2005-01-19
  • 打赏
  • 举报
回复
谢谢 tobaco() , jyu_730(阿宇)

jyu_730(阿宇)的代码我试了,可以用,但是不明白为什么C#要搞的这么复杂..
jyu_730 2005-01-19
  • 打赏
  • 举报
回复
我写的:
//将BMP图象转换为JPEG图象
private static ImageCodecInfo GetEncoderInfo(String mimeType)
{
int j;
ImageCodecInfo[] encoders;
encoders = ImageCodecInfo.GetImageEncoders();
for(j = 0; j < encoders.Length; ++j)
if(encoders[j].MimeType == mimeType)
return encoders[j];
return null;
}

private void Form1_Paint(object sender,System.Windows.Forms.PaintEventArgs e)
{
ImageCodecInfo ici;
Encoder enc;
EncoderParameter ep;
EncoderParameters epa;

// Initialize the necessary objects
ici = GetEncoderInfo("image/jpeg");
enc = Encoder.Quality;//设置保存质量
epa = new EncoderParameters(1);

// Set the compression level
ep = new EncoderParameter(enc, 25L);//质量等级为25%
epa.Param[0] = ep;

// create a Bitmap object from a BMP file.
Bitmap bmp = new Bitmap("GrapeBunch.bmp");

// Convert to JPEG and Save
bmp.Save("葡萄.jpg", ici, epa);
}
}
tobaco 2005-01-19
  • 打赏
  • 举报
回复
看这里

http://www.microsoft.com/china/msdn/archives/library/dnaspp/html/colorquant.asp

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧