代码更换ui图片_用技术的方式,在UI设计稿中设置随机码,保证高清
在工作中會(huì)遇到批量給圖片添加文字,隨機(jī)碼等需求,當(dāng)數(shù)據(jù)碼數(shù)量較大時(shí),UI的工作量就會(huì)非常大,這時(shí)候我們可以用python來(lái)幫我們提高工作效率。
1. 需求分析
我們有這樣一張圖片,我們需要將一批隨機(jī)碼添加到圖片的固定位置。
2. OpenCV方法
在圖片中添加文字看上去很簡(jiǎn)單,但是如果是利用OpenCV來(lái)做卻很麻煩。OpenCV中并沒(méi)有使用自定義字體文件的函數(shù),這不僅意味著我們不能使用自己的字體,而且意味著他無(wú)法顯示中文字符。這還是非常要命的事情。而且他顯示出來(lái)的文字位置也不太好控制,比如下面的代碼:
import cv2 import numpy as np from pylab import * #使用默認(rèn)字體 font=cv2.FONT_HERSHEY_SIMPLEX #新建圖像 im=np.zeros((50,50,3),np.uint8) #添加文字,1.2表示字體大小,(0,40)是初始的位置,(255,255,255)表示顏色,2表示粗細(xì) img=cv2.putText(im,'行者AI',(0,40),font,1.2,(255,255,255),2) imshow(img)在實(shí)際運(yùn)用中發(fā)現(xiàn)文字出現(xiàn)的位置并不怎么好把握,初始的坐標(biāo)默認(rèn)是指左下角的坐標(biāo)不怎么方便,而且顯示出文字以后我們也不好掌握他實(shí)際占的位置和大小。但也有方便之處就是,我們可以隨意改變他的粗細(xì),而不用更換字體。
3. PIL方法
使用PIL方法我們可以對(duì)字體,顏色等參數(shù)進(jìn)行更加細(xì)致的配置。
from PIL import Image, ImageDraw, ImageFont #打開(kāi)原圖 image = Image.open(filepath) # 新建繪圖對(duì)象 draw = ImageDraw.Draw(image) image.show() #可配置字體 字號(hào) 顏色 draw.text(size, text, font=setFont, fill=fillColor, direction=None) #保存文件 pic_save(image, filename)我們可以發(fā)現(xiàn),PIL支持使用自定義的字體文件,而且能夠提供字體所占位置的詳細(xì)信息,我們可以精確的確定文字所占的位置,在應(yīng)用中特別有用。唯一的不足就是他不能改變字體的粗細(xì)(畢竟這用的是字體模板)。
4. PyPDF2方法
使用后發(fā)現(xiàn) PIL方法更加好用, 可以迅速確定文字所占的位置, 但是我們需要將圖片打印出來(lái),這涉及到了清晰度的問(wèn)題,上訴兩種方法都無(wú)法保證圖片清晰度和UI設(shè)計(jì)稿一致,所以我們選擇將UI設(shè)計(jì)稿直接裝換為pdf格式,再使用pypdf將文字添加到pdf上保證清晰度,代碼如下:
from PyPDF2 import PdfFileWriter, PdfFileReader from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import letter from reportlab.lib.units import inch, mm import iopacket = io.BytesIO() # 使用Reportlab創(chuàng)建一個(gè)新的PDF can = canvas.Canvas(packet, pagesize=letter) # 設(shè)置字體 和字號(hào) can.setFont(font, size) # 設(shè)置顏色 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) # RTL can.showPage() can.save() # buffer從偏移0開(kāi)始 packet.seek(0) new_pdf = PdfFileReader(packet) # 讀取已有的PDF existing_pdf = PdfFileReader(open(old_pdf, "rb")) output = PdfFileWriter() # 在pdf第一頁(yè)操作 page = existing_pdf.getPage(0) page.mergePage(new_pdf.getPage(0)) output.addPage(page) # 最后,向目標(biāo)的pdf寫出 outputStream = open(out_new_pdf, "wb") output.write(outputStream) outputStream.close()5. 總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家學(xué)習(xí)或者使用python能帶來(lái)一定的幫助,如果對(duì)圖片清晰度要求不高使用PIL方法更加便捷, 如果需要高清打印,建議使用PyPDF2方法。
PS:
我們是行者AI,我們?cè)凇癆I+游戲”中不斷前行。
快來(lái)【公眾號(hào) | xingzhe_ai】,和我們討論更多技術(shù)問(wèn)題吧!
總結(jié)
以上是生活随笔為你收集整理的代码更换ui图片_用技术的方式,在UI设计稿中设置随机码,保证高清的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: html盒子模型页面居中,【静态页面架构
- 下一篇: 怎么用cpuz检测cpu 使用CPU-Z