利用PIL库计算打印机打印页面覆盖率

  • 打印机硒鼓页产量1600页,页产量根据ISO19752标准(5%覆盖率),那么5%的覆盖率是什么概念,我们应该怎么计算呢?

  • 打印机打印页面5%的覆盖率,是指常态下墨水在纸张上覆盖的面积比例,也就是墨水所覆盖的面积相对于整张打印纸面积的百分比。打印纸面积好计算,墨水所覆盖的面积即每一个字黑色部分占的面积,这就比较难计算了。如果把打印文件当成一张图片,也就是计算黑色像素占整张图片的面积,像素数应该很好数吧。

  • 首先,打开PS,新建一个宽度210MM,高度297MM大小的白色的背景当成A4纸,分辨率默认就好,当然分辨率越大越准确。
    《利用PIL库计算打印机打印页面覆盖率》

  • 然后找到文字工具
    《利用PIL库计算打印机打印页面覆盖率》

  • 随便写点内容,保存为图片格式,我这里做了两张并且保存成了PNG文件。
    《利用PIL库计算打印机打印页面覆盖率》
    《利用PIL库计算打印机打印页面覆盖率》

  • 好了,A4纸有了,下面就是用PIL的Image类,Image类的getpixel方法可以得到每个像素点的值,黑白模式下白色像素点的值是255,黑色像素点的值是0,遍历每个像素,计算黑色像素数占全部像素数的百分比,就是每一个字黑色部分占的面积即覆盖率。

  • 具体实现代码

from PIL import Image

img = Image.open(r'C:\Users\Administrator\Desktop\A4纸1.png')  #打开图片并实例化对象
img = img.convert('1')        								   #1黑白模式,每字节一个像素存储
L, H = img.size
color_white = img.getpixel((0, 0))                             #纸张左上角一点,应该是白色的
print(color_white)
color_white_list = []                                          #白色像素数目列表
color_black_list = []                                          #黑色像素数目列表
for h in range(H):                                             #遍历全部像素
    for l in range(L):
        dot = (l, h)
        color_list = img.getpixel(dot)
        if color_list == color_white:
            color_white_list.append(color_list)
        else:
            color_black_list.append(color_list)
print(len(color_black_list), len(color_white_list))
print(len(color_black_list)/(len(color_white_list)+len(color_black_list)))
#黑色像素占全部像素的百分比 格式化显示
print('{:.2%}'.format(len(color_black_list)/(len(color_white_list)+len(color_black_list))))
  • 运行,看结果。
    《利用PIL库计算打印机打印页面覆盖率》
    《利用PIL库计算打印机打印页面覆盖率》

  • 完成,如果只是正常的打印任务,一般是达不到5%的覆盖率;如果一张纸全部写满字,对纸张的覆盖面积就大,就要超过5%了。

    原文作者:崇赛
    原文地址: https://blog.csdn.net/qq_41960127/article/details/103254046
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞