python 打印标签的问题 标签涉及 大标题 具体数据 具体数据生成二维码等


import win32print
import win32ui
import win32con
from PIL import Image, ImageWin

def print2Printer():
        INCH = 1440

        hDC = win32ui.CreateDC ()
        hDC.CreatePrinterDC (win32print.GetDefaultPrinter ())
        '''
        hDC.StartDoc ("Test doc")
        hDC.StartPage ()
        hDC.SetMapMode (win32con.MM_TWIPS)
        hDC.DrawText ("TEST HELLO  WORLD! CORSS FIREWALL, WE TOUCH THE WORLD!",
                       (0, INCH * -1, INCH * 8, INCH * -2), win32con.DT_CENTER)
        '''
        bmp = Image.open('./2.png')
        if bmp.size[0] < bmp.size[1]:
            bmp = bmp.rotate(90)

        # ratios = [1.0 * printable_area[0] / bmp.size[1], 1.0 * printable_area[1] / bmp.size[0]]
        # scale = min(ratios)
        scale = 1

        hDC.StartDoc('./2.png')
        hDC.StartPage()

        dib = ImageWin.Dib(bmp)
        scaled_width, scaled_height = [int(scale * i) for i in bmp.size]

        x1 = 20  # 控制位置
        y1 = -30
        x2 = x1 + scaled_width
        y2 = y1 + scaled_height
        dib.draw(hDC.GetHandleOutput(), (x1, y1, x2, y2))
     
        hDC.EndPage ()
        hDC.EndDoc ()

print2Printer()

打印单一二维码图片已实现,现在需求是需要拼接这个二维码和大标题等,如下图所示,请问应该怎么改写,谢谢!

img

可以先用Image包将文字生成图片,然后再用PIL将文字图片和二维码图片拼接在一起


#coding: utf-8
import numpy as np
import cv2
 
leftgray = cv2.imread('1.jpg')
rightgray = cv2.imread('2.jpg')
 
hessian=400
surf=cv2.SURF(hessian) #将Hessian Threshold设置为400,阈值越大能检测的特征就越少
kp1,des1=surf.detectAndCompute(leftgray,None)  #查找关键点和描述符
kp2,des2=surf.detectAndCompute(rightgray,None)
 
 
FLANN_INDEX_KDTREE=0   #建立FLANN匹配器的参数
indexParams=dict(algorithm=FLANN_INDEX_KDTREE,trees=5) #配置索引,密度树的数量为5
searchParams=dict(checks=50)    #指定递归次数
#FlannBasedMatcher:是目前最快的特征匹配算法(最近邻搜索)
flann=cv2.FlannBasedMatcher(indexParams,searchParams)  #建立匹配器
matches=flann.knnMatch(des1,des2,k=2)  #得出匹配的关键点
 
good=[]
#提取优秀的特征点
for m,n in matches:
    if m.distance < 0.7*n.distance: #如果第一个邻近距离比第二个邻近距离的0.7倍小,则保留
        good.append(m)
 
src_pts = np.array([ kp1[m.queryIdx].pt for m in good])    #查询图像的特征描述子索引
dst_pts = np.array([ kp2[m.trainIdx].pt for m in good])    #训练(模板)图像的特征描述子索引
H=cv2.findHomography(src_pts,dst_pts)         #生成变换矩阵
 
h,w=leftgray.shape[:2]
h1,w1=rightgray.shape[:2]
shft=np.array([[1.0,0,w],[0,1.0,0],[0,0,1.0]])
M=np.dot(shft,H[0])            #获取左边图像到右边图像的投影映射关系
dst_corners=cv2.warpPerspective(leftgray,M,(w*2,h))#透视变换,新图像可容纳完整的两幅图
cv2.imshow('tiledImg1',dst_corners)   #显示,第一幅图已在标准位置
dst_corners[0:h,w:w*2]=rightgray  #将第二幅图放在右侧
#cv2.imwrite('tiled.jpg',dst_corners)
 
 
cv2.imshow('tiledImg',dst_corners)
cv2.imshow('leftgray',leftgray)
cv2.imshow('rightgray',rightgray)
cv2.waitKey()
cv2.destroyAllWindows()

直接调用PIL库的方法就可以解决问题。你的代码有点多了。

http://download.csdn.net/download/weixin_46491509/12313499?spm=1005.2026.3001.5635&utm_medium=distribute.pc_relevant_ask_down.none-task-download-2~default~OPENSEARCH~Rate-4.pc_feed_download_top3ask&depth_1-utm_source=distribute.pc_relevant_ask_down.none-task-download-2~default~OPENSEARCH~Rate-4.pc_feed_download_top3ask

用PIL将二维码po上去,再po上文字

把二维码和大标题也打印出图片,然后重新拼接在一起。

python opencv 图像拼接

参考下:https://blog.csdn.net/qq878594585/article/details/81901703