首先是导入需要使用的库:
from PIL import Image
import os
import fitz
1、将jip,png,jieg的图片,转化为PDF格式:
'''jip,png,jieg转化为PDF'''
def rea(path): #传递文件夹路径
file_list = os.listdir(path) #打开文件夹下的所有文件
print(file_list)
if file_list == []:
return False
pic_name = []
for x in file_list:
if "jpg" in x or 'png' in x or 'jpeg' in x:
pic_name.append(x) #将符合文件名的文件放入该列表中
print("即将要转化的列表:",pic_name)
pic_name.sort() #进行顺序排序
number_picture = len(pic_name) #计算转化图片的个数
print(str(number_picture))
im_list = []
for x in range(0,number_picture):
img1 = Image.open(os.path.join(path, pic_name[x])) #打开图片
img = Image.open(os.path.join(path, pic_name[x])) #打开图片
#读取图像模式
if img.mode == "RGBA":
'''
convert方法:转化图像模式
mode:指的是要转换成的图像模式;
params:其他可选参数。
'''
img = img.convert('RGB')
im_list.append(img)
elif img.mode == 'RGB':
im_list.append(img)
print(im_list)
pdf_name = "{}.pdf".format(pic_name[x].split(".")[0])
img1.save(pdf_name, "PDF", resolution=100.0, save_all=True, append_images=im_list)
print("输出文件名称:", pdf_name)
2、将PDF转化为图片格式:(其中路径选择,自行更改)
def pdf_png():
rotate = int(0)
zoom_x = 1.0
zoom_y = 1.0
trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
open_file_path = r'D:\Python_studyltem\图片格式转化\微信图片_20210604150902.pdf'
save_file_path = r'D:\Python_studyltem\图片格式转化'
pdf = fitz.open(open_file_path )
#遍历PDF的张数:pdf.pageCount 识别PDF的张数
for i in range(pdf.pageCount):
pm = pdf[i].getPixmap(matrix=trans, alpha=False)
pm.writePNG(save_file_path + '/第%s张%s.png' % (i,i))
pm.writePNG(save_file_path + '/第%s张%s.jpg' % (i,i))
pm.writePNG(save_file_path + '/第%s张%s.jpeg' % (i,i))
pm.writePNG(save_file_path + '/第%s张%s.tif' % (i,i))
3、总代码如下:
from PIL import Image
import os
import fitz
'''
将png,jpg,png的图片
'''
'''jip,png,jieg转化为PDF'''
def rea(path): #传递文件夹路径
file_list = os.listdir(path) #打开文件夹下的所有文件
print(file_list)
if file_list == []:
return False
pic_name = []
for x in file_list:
if "jpg" in x or 'png' in x or 'jpeg' in x:
pic_name.append(x) #将符合文件名的文件放入该列表中
print("即将要转化的列表:",pic_name)
pic_name.sort() #进行顺序排序
number_picture = len(pic_name) #计算转化图片的个数
print(str(number_picture))
im_list = []
for x in range(0,number_picture):
img1 = Image.open(os.path.join(path, pic_name[x])) #打开图片
img = Image.open(os.path.join(path, pic_name[x])) #打开图片
#读取图像模式
if img.mode == "RGBA":
'''
convert方法:转化图像模式
mode:指的是要转换成的图像模式;
params:其他可选参数。
'''
img = img.convert('RGB')
im_list.append(img)
elif img.mode == 'RGB':
im_list.append(img)
print(im_list)
pdf_name = "{}.pdf".format(pic_name[x].split(".")[0])
img1.save(pdf_name, "PDF", resolution=100.0, save_all=True, append_images=im_list)
print("输出文件名称:", pdf_name)
def pdf_png():
rotate = int(0)
zoom_x = 1.0
zoom_y = 1.0
trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
open_file_path = r'D:\Python_studyltem\图片格式转化\微信图片_20210604150902.pdf'
save_file_path = r'D:\Python_studyltem\图片格式转化'
pdf = fitz.open(open_file_path )
#遍历PDF的张数:pdf.pageCount 识别PDF的张数
for i in range(pdf.pageCount):
pm = pdf[i].getPixmap(matrix=trans, alpha=False)
pm.writePNG(save_file_path + '/第%s张%s.png' % (i,i))
pm.writePNG(save_file_path + '/第%s张%s.jpg' % (i,i))
pm.writePNG(save_file_path + '/第%s张%s.jpeg' % (i,i))
pm.writePNG(save_file_path + '/第%s张%s.tif' % (i,i))
if __name__ == '__main__':
mypath= "D:\\Python_studyltem\\图片格式转化\\img" #获取文件夹下的文件
rea(mypath)
pdf_png()