当前位置: 首页 > 工具软件 > JIP > 使用案例 >

Python-图片格式转化(jip,png,jieg转化为PDF,PDF转jip,png,jieg)

轩辕晔
2023-12-01

首先是导入需要使用的库:

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()
 类似资料: