python PDF文件合并、图片处理

一.合并多个PDF文件
实例:
#导入模块import codecs
import os
import PyPDF2 as PyPDF2

#建立一个装pdf文件的数组
files = list()#遍历该目录下的所有文件
for filename in os.listdir("C:\Python27\第二十八课 数据处理"):    #如果是以.pdf结尾的文件,则追加到数组中
    if filename.endswith(".pdf"):
        files.append(filename)

#以数字进行排序(数组中的排列顺序默认是以ASCII码排序,当以数字进行排序时会不成功)
newfiles = sorted(files,key=lambda d: int(d.split(".pdf")[0]))

#进入该目录
os.chdir("C:\Python27\第二十八课 数据处理")#生成一个空白的PDF文件
pdfwriter = PyPDF2.PdfFileWriter()
for item in newfiles:    ##以只读方式依次打开pdf文件
    pdfreader = PyPDF2.PdfFileReader(open(item,"rb"))
    for page in range(pdfreader.numPages):        # #将打开的pdf文件内容一页一页的复制到新建的空白pdf里
        pdfwriter.addPage(pdfreader.getPage(page))

#生成all.pdf文件
with codecs.open("all.pdf","wb") as f:    #将复制的内容全部写入all.pdf文件中
    pdfwriter.write(f)


二.图片处理

图像处理是一门应用非常广的技术,而拥有非常丰富第三方扩展库的 Python 当然不会错过这一门盛宴。PIL (Python Imaging Library)是 Python 中最常用的图像处理库,如果你是python2.x,可以通过以下地址进行下载:http://www.pythonware.com/products/pil/index.htm,找到相对应的版本进行下载就可以了。
注意:PIL模块在python3.x中已经替换成pillow模块,直接使用pip3 install pillow即可安装模块,导入时使用from PIL import Image

1.Image的三个属性:
format : 识别图像的源格式,如果该文件不是从文件中读取的,则被置为 None 值。

size : 返回的一个元组,有两个元素,其值为象素意义上的宽和高。

mode : RGB(true color image),此外还有,L(luminance),CMTK(pre-press image)。

2.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("a.jpg")
print(image.format,image.size,image.mode)

运行:

JPEG (951, 714) RGB
2.显示图片
from PIL import Image

image = Image.open("a.jpg")image.show()

运行之后会打开图片:



3.使用 crop((left, upper, right, lower)) 方法在图片上截取一个矩形的图片
from PIL import Image

image = Image.open("a.jpg")
print(image.format,image.size,image.mode)
crop = (415,280,535,420) #讲图片的((415, 280), (415, 420), (535, 420), (280, 420))所画出来的区域进行裁剪
new = image.crop(crop)new.save("b.jpg")        #将图片保存为b.jpg
new.show()               #打开图片
运行之后会多一个b.jpg文件,打开查看。


4.图片拼合,把照片截取出来,然后调换截取的照片180度,然后在拼接在一起
from PIL import Image

#打开文件
image = Image.open("a.jpg")
#定义截取的坐标
crop = (415,280,535,420)
#截取
new = image.crop(crop)
#讲截取的图片旋转180度
new2 = new.transpose(Image.ROTATE_180)
#将旋转后的图片放回坐标位置
image.paste(new2,crop)
#显示图片
image.show()
运行:


5.缩放图片

from PIL import Image

#打开文件
image = Image.open("a.jpg")

#获取文件的长和宽
(x, y) = image.size
#定义缩放后的长
newx = 600
#根据比例计算缩放后的宽
newy = int(y*newx/x)
#缩放图片
out = image.resize((newx, newy), Image.ANTIALIAS)
#显示
out.show()
运行之后会显示缩放后的图片。



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值