四、python图像合并,打印图片
2017-09-01 14:19
363 查看
生活中肯定会遇到两张图片或多张合并成一张图片的情况,下面使用python+Pillow 实现这个目的。
代码:
效果如下:
打印图片,pywin32上的例子,为了方便,在这里在粘贴一遍
效果如下:
参考文章:
pywin32 win32print http://timgolden.me.uk/python/win32_how_do_i/print.html
代码:
import win32print import win32ui import win32con from barcode.writer import ImageWriter from barcode.codex import Code39 from PIL import Image, ImageDraw, ImageFont, ImageWin, ImageColor from StringIO import StringIO import os def merge(self, image1, image2): ''' 实现垂直合并两张图片 @param image1: 需要合并的第一张图片 @param image2: 需要合并的第二张图片 ''' w1, h1 = image1.size w2, h2 = image2.size target = Image.new('RGB', (w1 if w1 > w2 else w2 , h1 + h2), (255, 255, 255, 0)) temp = image1.resize((w1, h1), Image.ANTIALIAS) target.paste(temp, (0, 0, w1, h1)) temp1 = image2.resize((w2, h2), Image.ANTIALIAS) target.paste(temp1, (0, h1, w2, h1 + h2)) target.save('merge.png') target.show() if __name__ == '__main__': printer_name = win32print.GetDefaultPrinter() print printer_name t = Test() t.merge(Image.open('t.png'), Image.open('image2.png'))
效果如下:
打印图片,pywin32上的例子,为了方便,在这里在粘贴一遍
def imagePirnter(self): # # Constants for GetDeviceCaps # # # HORZRES / VERTRES = printable area # HORZRES = 8 VERTRES = 10 # # LOGPIXELS = dots per inch # LOGPIXELSX = 88 LOGPIXELSY = 90 # # PHYSICALWIDTH/HEIGHT = total area # PHYSICALWIDTH = 110 PHYSICALHEIGHT = 111 # # PHYSICALOFFSETX/Y = left / top margin # PHYSICALOFFSETX = 112 PHYSICALOFFSETY = 113 printer_name = win32print.GetDefaultPrinter () file_name = "merge.png" # # You can only write a Device-independent bitmap # directly to a Windows device context; therefore # we need (for ease) to use the Python Imaging # Library to manipulate the image. # # Create a device context from a named printer # and assess the printable size of the paper. # hDC = win32ui.CreateDC () hDC.CreatePrinterDC (printer_name) printable_area = hDC.GetDeviceCaps (HORZRES), hDC.GetDeviceCaps (VERTRES) printer_size = hDC.GetDeviceCaps (PHYSICALWIDTH), hDC.GetDeviceCaps (PHYSICALHEIGHT) printer_margins = hDC.GetDeviceCaps (PHYSICALOFFSETX), hDC.GetDeviceCaps (PHYSICALOFFSETY) # # Open the image, rotate it if it's wider than # it is high, and work out how much to multiply # each pixel by to get it as big as possible on # the page without distorting. # bmp = Image.open (file_name) # if bmp.size[0] > bmp.size[1]: # bmp = bmp.rotate (90) ratios = [1.0 * printable_area[0] / bmp.size[0], 1.0 * printable_area[1] / bmp.size[1]] scale = min (ratios) # # Start the print job, and draw the bitmap to # the printer device at the scaled size. # hDC.StartDoc (file_name) hDC.StartPage () dib = ImageWin.Dib (bmp) scaled_width, scaled_height = [int (scale * i) for i in bmp.size] x1 = int ((printer_size[0] - scaled_width) / 2) y1 = int ((printer_size[1] - scaled_height) / 2) x2 = x1 + scaled_width y2 = y1 + scaled_height dib.draw (hDC.GetHandleOutput (), (x1, y1, x2, y2)) hDC.EndPage () hDC.EndDoc () hDC.DeleteDC () if __name__ == '__main__': t = Test() t.imagePirnter()
效果如下:
参考文章:
pywin32 win32print http://timgolden.me.uk/python/win32_how_do_i/print.html
相关文章推荐
- 四、python图像合并,打印图片
- python3-opencv库(3)--图片颜色空间转换,利用HSV进行物体跟踪,图像通道分离与合并
- 使用python进行图像处理-调整图片大小
- 直播课 1-13 合并pdf文件 python处理图片
- 用python简单处理图片(4):图像中的像素访问
- 用python简单处理图片(1):打开\显示\保存图像
- 图像识别API Python 指定文件夹图片内容转化为文字
- python合并图片
- Python各类图像库的图片读写方式总结(推荐)
- python 合并图片任意方式
- OpenCV之Python学习笔记(1)(2): 图像的载入、显示和保存 图像元素的访问、通道分离与合并
- 用python简单处理图片(2):图像通道\几何变换\裁剪
- python 图像预处理--统一修改图片大小并使图片反色
- python中图像通道分离与合并
- python使用PyGame绘制图像并保存为图片文件的方法
- Python+ImageMagick实现多图片合并为一个pdf文件
- OpenCV: 实现将三幅图像合并在一张图片
- SWT中打印图片、图像
- 用python简单处理图片(4):图像中的像素访问
- [Python开发] python使用Image合并图像