想法产生的背景
最近孩子学校要求打印的材料比较多,就自己买了台打印机。安置妥当后在使用过程中遇到了还没有打印多少张就发现墨水不够用了,就想着打印图片怎么才能即省墨又不丢打印效果,这样就有这篇文章进行尝试。
什么样的图片打印时需要考虑省墨?
- 扫描的黑白图片就可以忽略了,基本已经达到了省墨的程度
- 要考虑省墨的是用手机拍摄的书本图片
如何才可能省墨?
- 把彩色图片生成灰度图
- 处理一些浅色的背景图
处理架构
使用 golang
处理图片并自动生成pdf
处理过程
- 读取原始图片
- 计算平均灰度值并
- 生成灰度图(大于平均灰度值时直接使用白色)
- 处理边缘阴影
- 生成pdf
处理边缘阴影
- 查看边缘所有不是白色像素点
- 今次查看像素点周围八个点是否和当前点值接近(参考程序里的相似容差值)
- 如周围有相似点时直接使用白色
下面看下对比效果
彩色图 | 一般灰度图 | 结果灰度图 |
---|---|---|
52.jpg | 52.jpg | 52.jpg.png |
53.jpg | 53.jpg | 53.jpg.png |
54.jpg | 54.jpg | 54.jpg.png |
55.jpg | 55.jpg | 55.jpg.png |
56.jpg | 56.jpg | 56.jpg.png |
后续改进
还有许多可以改进的地方,如:
- 处理不是边缘的阴影部分
- 处理字或显示实体周围的噪点
等待这些就属于图像处理的高级领域了,感兴趣的小伙伴可以再深入研究下
最后加上程序的源码地址,感兴趣的小伙伴可以一起交流下:
网友评论