优化pngtojpg插件修正png到jpg图片转换中失真问题

原创文档,转载请将原文url地址标明

我们在前面“开发Windows Live Writer插件实现png图片到jpg图片的批量转换”一文中介绍了一个wlw的插件来实现png图片到jpg图片的自动转换工作。

插件下载页面参见http://www.iigrowing.cn/pngtojpeg.html页面

前次发表插件在对一些特定的png图片进行转换时,图片转换后呈现非常严重的失真,如下图

wps_clip_image-9859[4][1]转换前的png图片

转换后的图片

wps_clip_image-18180[4][1]

可以看到问题比较严重,因此需要进行相关的改进工作。

初步估计是原来插件中图像转换功能非常简单,仅仅是采用系统默认的图片转换api进行的,里面可控的因素比较少,容易造成失真。

原转换代码如下:

using (System.Drawing.Image img = System.Drawing.Image.FromFile(srcimg))

{

img.Save(dstimg, System.Drawing.Imaging.ImageFormat.Jpeg);

}

仅仅调用.net平台的最简单的图片打开功能获取一个png图片,然后调用save进行图片的存储,为进行任何适当的处理。因此造成相关图片的失真的问题。

为了解决相关问题,在codeproject上搜索了一个jpeg图片的专业文章,然后从里面提取相关代码进行改造,最后集成到插件中,完成相关功能。

http://www.codeproject.com/Articles/83225/A-Simple-JPEG-Encoder-in-C

wps_clip_image-21609[7][1]

相关代码下载地址

http://www.codeproject.com/KB/graphics/SimpleJpeg/JPEG_Encoder_src_v3.zip

读者可以自行研究相关丰富的功能

本插件中,将相关多余代码都去除,保留了必要的图片转换等相关代码集成到插件中,最后完成相关功能。

新版本插件见http://www.iigrowing.cn/pngtojpeg.html

发表评论