本文首发于:行者AI

在工作中会遇到批量给图片增加文字,随机码等需要,当数据码数量较大时,UI的工作量就会十分大,这时候咱们能够用python来帮咱们进步工作效率。

1. 需要剖析

咱们有这样一张图片,咱们须要将一批随机码增加到图片的固定地位。

2. OpenCV办法

在图片中增加文字看上去很简略,然而如果是利用OpenCV来做却很麻烦。OpenCV中并没有应用自定义字体文件的函数,这不仅意味着咱们不能应用本人的字体,而且意味着他无奈显示中文字符。这还是十分要命的事件。而且他显示进去的文字地位也不太好管制,比方上面的代码:

import cv2import numpy as npfrom pylab import *#应用默认字体font=cv2.FONT_HERSHEY_SIMPLEX#新建图像im=np.zeros((50,50,3),np.uint8)#增加文字,1.2示意字体大小,(0,40)是初始的地位,(255,255,255)示意色彩,2示意粗细img=cv2.putText(im,'行者AI',(0,40),font,1.2,(255,255,255),2)imshow(img)

在理论使用中发现文字呈现的地位并不怎么好把握,初始的坐标默认是指左下角的坐标不怎么不便,而且显示出文字当前咱们也不好把握他理论占的地位和大小。但也有不便之处就是,咱们能够随便扭转他的粗细,而不必更换字体。

3. PIL办法

应用PIL办法咱们能够对字体,色彩等参数进行更加粗疏的配置。

from PIL import Image, ImageDraw, ImageFont#关上原图image = Image.open(filepath)# 新建绘图对象draw = ImageDraw.Draw(image)image.show()#可配置字体 字号 色彩draw.text(size, text, font=setFont, fill=fillColor, direction=None)#保留文件pic_save(image, filename)

咱们能够发现,PIL反对应用自定义的字体文件,而且可能提供字体所占地位的详细信息,咱们能够准确的确定文字所占的地位,在利用中特地有用。惟一的有余就是他不能扭转字体的粗细(毕竟这用的是字体模板)。

4. PyPDF2办法

应用后发现 PIL办法更加好用, 能够迅速确定文字所占的地位, 然而咱们须要将图片打印进去,这波及到了清晰度的问题,上诉两种办法都无奈保障图片清晰度和UI设计稿统一,所以咱们抉择将UI设计稿间接装换为pdf格局,再应用pypdf将文字增加到pdf上保障清晰度,代码如下:

from PyPDF2 import PdfFileWriter, PdfFileReaderfrom reportlab.pdfgen import canvasfrom reportlab.lib.pagesizes import letterfrom reportlab.lib.units import inch, mmimport iopacket = io.BytesIO()# 应用Reportlab创立一个新的PDFcan = canvas.Canvas(packet, pagesize=letter)# 设置字体 和字号can.setFont(font, size)# 设置色彩can.setFillColorRGB(1, 1, 1)can.rotate(rotate)# 更多色彩配置# can.setStrokeColorRGB(0.2, 0.5, 0.3)# can.setFillColorRGB(255, 20, 147)# can.setStrokeColorRGB(220, 20, 60)can.drawString(x * mm, y * mm, text) # RTLcan.showPage()can.save()# buffer从偏移0开始packet.seek(0)new_pdf = PdfFileReader(packet)# 读取已有的PDFexisting_pdf = PdfFileReader(open(old_pdf, "rb"))output = PdfFileWriter()# 在pdf第一页操作page = existing_pdf.getPage(0)page.mergePage(new_pdf.getPage(0))output.addPage(page)# 最初,向指标的pdf写出outputStream = open(out_new_pdf, "wb")output.write(outputStream)outputStream.close()

5. 总结

以上就是这篇文章的全部内容了,心愿本文的内容对大家学习或者应用python能带来肯定的帮忙,如果对图片清晰度要求不高应用PIL办法更加便捷, 如果须要高清打印,倡议应用PyPDF2办法。