直播课 1-13 合并pdf文件 python处理图片
2018-01-15 11:18
573 查看
合并多个pdf文件为一个pdf文件
import PyPDF2 import os #建立一个装pdf文件的数组 pdfFiles = [] for fileName in os.listdir('aming'): #遍历该程序所在文件夹内的文件 if fileName.endswith('.pdf'): #找到以.pdf结尾的文件 pdfFiles.append(fileName) #将pdf文件装进pdfFiles数组内 # pdfFiles.sort() #文件排序print(pdfFiles) os.chdir("aming") pdfWriter = PyPDF2.PdfFileWriter() #生成一个空白的pdf文件 for fileName in pdfFiles: pdfReader = PyPDF2.PdfFileReader(open(fileName,'rb')) #以只读方式依次打开pdf文件 for pageNum in range(pdfReader.numPages): print(pdfReader.getPage(pageNum)) pdfWriter.addPage(pdfReader.getPage(pageNum)) #将打开的pdf文件内容一页一页的复制到新建的空白pdf里 pdfOutput = open('combine.pdf','wb') #生成combine.pdf文件 pdfWriter.write(pdfOutput) #将复制的内容全部写入combine.pdf pdfOutput.close()
python 处理图片
图像处理是一门应用非常广的技术,而拥有非常丰富第三方扩展库的 Python 当然不会错过这一门盛宴。PIL (Python Imaging Library)是 Python 中最常用的图像处理库,如果你是python2.x,可以通过以下地址进行下载:http://www.pythonware.com/products/pil/index.htm,找到相对应的版本进行下载就可以了。注意:PIL模块在python3.x中已经替换成pillow模块,文档地址:http://pillow.readthedocs.io/en/latest/,直接使用pip3 install pillow即可安装模块,导入时使用from PIL import Image.
from PIL import Image image = Image.open("1.jpg") print(image.format, image.size, image.mode) image.show() 结果: JPEG (1080, 1920) RGB 并把图片打开,展示出来
Image的三个属性:
format : 识别图像的源格式,如果该文件不是从文件中读取的,则被置为 None 值。 size : 返回的一个元组,有两个元素,其值为象素意义上的宽和高。 mode : RGB(true color image),此外还有,L(luminance),CMTK(pre-press image)。 Image的方法介绍: show():显示最近加载的图像 open(infilename): 打开文件 save(outfilename):保存文件 crop((left, upper, right, lower)):从图像中提取出某个矩形大小的图像。它接收一个四元素的元组作为参数,各元素为(left, upper, right, lower),坐标系统的原点(0, 0)是左上角。
Image的几何处理:
out = im.resize((128, 128)) #调整图片大小 out = im.rotate(45) #逆时针旋转 45 度角。 out = im.transpose(Image.FLIP_LEFT_RIGHT) #左右对换。 out = im.transpose(Image.FLIP_TOP_BOTTOM) #上下对换。 out = im.transpose(Image.ROTATE_90) #旋转 90 度角。 out = im.transpose(Image.ROTATE_180) #旋转 180 度角。 out = im.transpose(Image.ROTATE_270) #旋转 270 度角。
例子1:抠图
需求,把头像给截图出来:from PIL import Image image = Image.open("1.jpg") print(image.format, image.size, image.mode) box = (600, 300, 1050, 660) region = image.crop(box) region.save("cutting.jpg")
上述代码讲图片的((600, 300), (600, 660), (1050, 300), (1050, 660))所画出来的区域进行裁剪,并保存在cutting.jpg中
例子2:图片拼合
from PIL import Image image = Image.open("1.jpg") print(image.format, image.size, image.mode) box = (600, 300, 1050, 660) egion = image.crop(box) #egion.save("cutting.jpg") region = egion.transpose(Image.ROTATE_180) image.paste(region, box) image.show()
把头像照片截取出来,然后调换头像照片180度,然后在拼接在一起,
例子3:缩放:
from PIL import Image infile = "2.jpg" outfile = "new2.jpg" image = Image.open(infile) (x, y) = image.size newx = 300 newy = int(y*newx/x) out = image.resize((newx, newy), Image.ANTIALIAS) out.show()
例子4:验证码
import random import string import sys import math from PIL import Image, ImageDraw, ImageFont, ImageFilter # 字体的位置,不同版本的系统会有不同 font_path = 'msyh.ttf' # 生成几位数的验证码 number = 4 # 生成验证码图片的高度和宽度 size = (100, 30) # 背景颜色,默认为白色 bgcolor = (255, 255, 255) # 字体颜色,默认为蓝色 fontcolor = (0, 0, 255) # 干扰线颜色。默认为红色 linecolor = (255, 0, 0) # 是否要加入干扰线 draw_line = True # 加入干扰线条数的上下限 line_number = 20 # 用来随机生成一个字符串 def gene_text(): source = list(string.ascii_letters) for index in range(0, 10): source.append(str(index)) return ''.join(random.sample(source, number)) # number是生成验证码的位数 # 用来绘制干扰线 def gene_line(draw, width, height): begin = (random.randint(0, width), random.randint(0, height)) end = (random.randint(0, width), random.randint(0, height)) draw.line([begin, end], fill=linecolor) # 生成验证码 def gene_code(): width, height = size # 宽和高 image = Image.new('RGBA', (width, height), bgcolor) # 创建图片 font = ImageFont.truetype(font_path, 25) # 验证码的字体 draw = ImageDraw.Draw(image) # 创建画笔 text = gene_text() # 生成字符串 font_width, font_height = font.getsize(text) draw.text(((width - font_width) / number, (height - font_height) / number), text, font=font, fill=fontcolor) # 填充字符串 if draw_line: for i in range(line_number): gene_line(draw, width, height) # image = image.transform((width + 20, height + 10), Image.AFFINE, (1, -0.3, 0, -0.1, 1, 0), Image.BILINEAR) # 创建扭曲 image = image.filter(ImageFilter.EDGE_ENHANCE_MORE) # 滤镜,边界加强 image.save('idencode.png') # 保存验证码图片 # image.show() if __name__ == "__main__": gene_code()
相关文章推荐
- Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
- Python+ImageMagick实现多图片合并为一个pdf文件
- Python处理CSV,Excel,PDF和图片
- Python实现合并同一个文件夹下所有PDF文件的方法示例
- Python 将pdf转换成txt(不处理图片)
- Python 深入浅出 - PyPDF2 处理 PDF 文件
- 【Python】pdf文件逐页转图片/修改图片存储大小脚本
- 【Python】pdf文件处理之“PyPDF2”库简易安装笔记
- 【使用Itext处理PDF文档(新建PDF文件、修改PDF文件、PDF中插入图片、将PDF文件转换为图片)】
- python3.6深度学习图片集处理项目源代码(为cnn等准备图片集合,批量生成、删除、改名、旋转、调整图片大小,包括删除指定路径下所有文件)
- python 间接处理webp图片文件
- python合并PDF文件
- [置顶] 【python PDF合并】python 合并同一个文件夹下所有PDF文件
- nodejs将PDF文件转换成txt文本,并利用python处理转换后的文本文件
- windows下用Python把pdf文件转化为图片(png格式)
- PDF 补丁丁 0.4.1.804 测试版发布:合并文件夹的图片和PDF文件,自由生成多层次书签
- windows下Python实现将pdf文件转化为png格式图片的方法
- Python 将pdf转换成txt(不处理图片)
- Aspose.Pdf合并图片到PDF文件
- Python PDF 文件解析及二次处理 实例