달나라 노트

Python PIL/Pillow : Image (Python으로 image를 pdf로 변환하기, 이미지 형식 변환, 이미지 확장자 변환, webp to png, jpeg to png) 본문

Python/Python ETC

Python PIL/Pillow : Image (Python으로 image를 pdf로 변환하기, 이미지 형식 변환, 이미지 확장자 변환, webp to png, jpeg to png)

CosmosProject 2021. 7. 26. 21:57
728x90
반응형

 

 

 

Python을 이용해 image 파일을 pdf로 변환하는 방법을 알아봅시다.

 

 

 

pip install PIL
pip install Pillow

 

사용되는 라이브러리는 PIL 입니다.

PIL이 간혹 설치가 제대로 되지 않는 경우가 있을 수 있는데 그럴 땐 Pillow 패키지를 설치합시다.

(Pillow 패키지를 설치해도 PIL 라이브러리는 이용할 수 있습니다.)

 

 

 

 

 

from PIL import Image

img = Image.open(r'test/img_test_1.png')
img_rgb = img.convert('RGB')
img_rgb.save('test/pdf_test_1.pdf')

위 예시는 test directory에 있는 img_test_1.png라는 이미지파일을 test directory안에 pdf_test_1.pdf라는 이름의 pdf 파일로 변환하는 코드입니다.

 

 

 

 

 

from PIL import Image

img_1 = Image.open('test/img_test_1.png')
img_2 = Image.open('test/img_test_2.png')
img_3 = Image.open('test/img_test_3.png')

img_rgb_1 = img_1.convert('RGB')
img_rgb_2 = img_2.convert('RGB')
img_rgb_3 = img_3.convert('RGB')

img_main = img_rgb_1
list_imgs = [img_rgb_2, img_rgb_3]

img_main.save('test/pdf_test_1.pdf', save_all=True, append_images=list_imgs)

위처럼 여러 image를 open & convert한 후에,

하나의 image를 save하면서 append_images를 이용하여 나머지 image list를 전달해주면

여러 개의 image file을 하나의 pdf file로 묶어서 생성할 수 있습니다.

 

save method의 save_all option은 반드시 True로 생성되어야합니다.

 

 

 

 

 

 

 

 

 

 

다음에는 이미지 형식 변환입니다.

 

이미지 형식 변환은 더 간단합니다.

원하는 이미지를 Image.open()으로 열어서 RGB 형태로 전환한 후 변환된 RGB 형태의 이미지 데이터를 원하는 확장자(.png, .jpeg, ...)로 저장해주면 끝입니다.

 

다음은 이미지 변환의 몇가지 예시를 나타낸 코드입니다.

아래의 코드들은 이미지 확장자 간의 몇가지 변환 예시이며 동일한 형태로 확장자만 변경하여 원하는 대부분의 이미지 확장자 변경을 할 수 있습니다.

 

 

 

png -> jpeg

from PIL import Image

img = Image.open('test_image.png').convert('RGB')
img.save('test_image_converted.jpeg').convert('RGB')

 

 

jpg -> png

from PIL import Image

img = Image.open('test_image.jpg').convert('RGB')
img.save('test_image_converted.png').convert('RGB')

 

 

webp -> png

from PIL import Image

img = Image.open('test_image.webp').convert('RGB')
img.save('test_image_converted.png').convert('RGB')

 

 

png -> webg

from PIL import Image

img = Image.open('test_image.png').convert('RGB')
img.save('test_image_converted.webp').convert('RGB')

 

 

 

 

 

 

728x90
반응형
Comments