原创文档,转载请将原文url地址标明
我们在前面“开发Windows Live Writer插件实现png图片到jpg图片的批量转换”一文中介绍了一个wlw的插件来实现png图片到jpg图片的自动转换工作。
插件下载页面参见http://www.iigrowing.cn/pngtojpeg.html页面
前次发表插件在对一些特定的png图片进行转换时,图片转换后呈现非常严重的失真,如下图
转换前的png图片
转换后的图片
可以看到问题比较严重,因此需要进行相关的改进工作。
初步估计是原来插件中图像转换功能非常简单,仅仅是采用系统默认的图片转换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
相关代码下载地址
http://www.codeproject.com/KB/graphics/SimpleJpeg/JPEG_Encoder_src_v3.zip
读者可以自行研究相关丰富的功能
本插件中,将相关多余代码都去除,保留了必要的图片转换等相关代码集成到插件中,最后完成相关功能。