Png'yi pdf'e çevirme

Aşağıdaki kodlarla resmi pdf’e çevirebiliyoruz.
Ama dosyaya konumlarını tek tek girmemiz gerekiyor.
Yapmak istediğim bir klasorün içindeki resim dosyalarını tek tek gitmek yerine otomatik olarak alan bir program yazmak istiyorum yardımcı olabilir misiniz?

from PIL import Image

image1 = Image.open(r'C:\Users\0xE14\Desktop\ss\1.png')
image2 = Image.open(r'C:\Users\0xE14\Desktop\ss\2.png')
image3 = Image.open(r'C:\Users\0xE14\Desktop\ss\3.png')
image4 = Image.open(r'C:\Users\0xE14\Desktop\ss\4.png')
 
im1 = image1.convert('RGB')
im2 = image2.convert('RGB')
im3 = image3.convert('RGB')
im4 = image4.convert('RGB')

imagelist = [im2,im3,im4]

im1.save(r'C:\Users\0xE14\Desktop\ss\pdfAdı.pdf',save_all=True, append_images=imagelist)

Bu kısımdan ihtiyacınız doğrultusundaki tüm dosya klasör işlemleri için gerekli bilgileri alabilirsiniz.

Hallettim teşekkürler.

1 Beğeni

Böylece bitti…

# -*- coding: utf-8 -*-
"""
Created on Fri Jul  3 15:46:47 2020

@author: 0xE14
"""
# Programı resimlerin oldugu mevcut diziye atın ve sonra çalıştırın.
# Not : 'pip install Pillow'  şeklinde modülü kurmanız lazım.

import os
from PIL import Image

mevcut_dizin = os.getcwd()
liste1 = os.listdir(mevcut_dizin)

liste2 = []
liste3 = []

for i in range(len(liste1)):
    if liste1[i].endswith('png'):
        liste2.append(Image.open(mevcut_dizin + "\\" + liste1[i])) 
        
print(liste1)

for k in range(len(liste2)):
    liste3.append(liste2[k].convert('RGB'))


liste3[0].save(mevcut_dizin + "\\" + "pdfAdı.pdf", save_all=True, append_images=liste3[1::])
1 Beğeni

kullandım güzel ama resim dosyasının uzantısı her zaman png olmayabilir. ona da bir çözüm bulmak lazım.

1 Beğeni

For döngüsü ile kullanılabilir uzantılar il işlem yapılabilir
Mesela

for i in range(len(liste1)):
    if liste1[i].endswith('png'):
extensions = ("png","jpeg")
for i in range(len(liste1)):
    if any([liste1[i].endswith(x) for x in extensions]):

Diye degistirilebilir


Kod : dosyanın uzantısının en az bir “extensions”
Listesindeki uzantiyla bitip bitmediğini kontrol ediyor

2 Beğeni

o zaman şöyle yapalım…

# -*- coding: utf-8 -*-
"""
Created on Fri Jul  3 15:46:47 2020

@author: 0xE14
"""
# Programı resimlerin oldugu mevcut diziye atın ve sonra çalıştırın.
# Not : 'pip install Pillow'  şeklinde modülü kurmanız lazım.

import os
from PIL import Image

mevcut_dizin = os.getcwd()
liste1 = os.listdir(mevcut_dizin)

liste2 = []
liste3 = []

extensions = ("png", "bmp", "gif", "png", "tifjpg", "jp2", "j2k", "jpeg")
for i in range(len(liste1)):
    if any([liste1[i].endswith(x) for x in extensions]):
        liste2.append(Image.open(mevcut_dizin + "\\" + liste1[i]))

print(liste1)

for k in range(len(liste2)):
    liste3.append(liste2[k].convert('RGB'))

liste3[0].save(mevcut_dizin + "\\" + "pdfAdı.pdf", save_all=True, append_images=liste3[1::])
1 Beğeni

aslında daha kodun iyileştirilmesi için isimlendirmeler düzeltilebilir mesela x veya i veya liste1,liste2,list3 bunlar okuyanlara bir anlam ifade etmiyor
örnek veriyom i yerine indx x yerine de ext gelebilir
veya listeler yerine ne işte kullandıysan mesela
liste1 yerine all_files olabilir

1 Beğeni