代码更换ui图片_用技术的方式,在UI设计稿中设置随机码,保证高清
在工作中會遇到批量給圖片添加文字,隨機碼等需求,當數據碼數量較大時,UI的工作量就會非常大,這時候我們可以用python來幫我們提高工作效率。
1. 需求分析
我們有這樣一張圖片,我們需要將一批隨機碼添加到圖片的固定位置。
2. OpenCV方法
在圖片中添加文字看上去很簡單,但是如果是利用OpenCV來做卻很麻煩。OpenCV中并沒有使用自定義字體文件的函數,這不僅意味著我們不能使用自己的字體,而且意味著他無法顯示中文字符。這還是非常要命的事情。而且他顯示出來的文字位置也不太好控制,比如下面的代碼:
import cv2 import numpy as np from 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, PdfFileReader from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import letter from reportlab.lib.units import inch, mm import iopacket = io.BytesIO() # 使用Reportlab創建一個新的PDF can = 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) # RTL can.showPage() can.save() # buffer從偏移0開始 packet.seek(0) new_pdf = PdfFileReader(packet) # 讀取已有的PDF existing_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方法。
PS:
我們是行者AI,我們在“AI+游戲”中不斷前行。
快來【公眾號 | xingzhe_ai】,和我們討論更多技術問題吧!
總結
以上是生活随笔為你收集整理的代码更换ui图片_用技术的方式,在UI设计稿中设置随机码,保证高清的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html盒子模型页面居中,【静态页面架构
- 下一篇: 怎么用cpuz检测cpu 使用CPU-Z