Python 여러 장의 그림 을 합 쳐 pdf 의 참고 예제 로 만 듭 니 다.
하나의 수 요 를 얻 는 가장 중요 한 것 은 큰 임 무 를 하나의 작은 모듈 로 나 누 어 하나씩 격파 하 는 것 이다.
사진 을 찍다
이 단 계 는 먼저 모든 페이지 를 잘 찍 는 것 입 니 다.주의해 야 할 것 은 책의 페이지 번호 에 따라 찍 는 것 입 니 다.뒤의 순 서 는 파일 이름 에 따라 정렬 되 기 때문에 사진 을 찍 는 파일 이름 은 기본적으로 시간 에 따라 생 성 됩 니 다.찍 을 때 어 지 러 우 면 그때 생 성 된 pdf 안의 페이지 도 어 지 러 워 집 니 다.
사용 하 는 Python 작업 라 이브 러 리
Python 의 가장 좋 은 점 은 대량의 제3자 라 이브 러 리 가 우리 가 원 하 는 방법 을 신속하게 실현 할 수 있 도록 도와 주 는 것 입 니 다.두 개의 라 이브 러 리,PyFPDF 를 검색 하 였 습 니 다. img2pdf 와 함께,우 리 는 img2pdf 를 선택 하여 우리 의 요 구 를 완성 합 니 다 pip install img2pdf
파 이 썬 폴 더 옮 겨 다 니 며 그림 가 져 오기
dirname = "f:/wlzcool"
imgs = []
for fname in os.listdir(dirname):
if not fname.endswith(".jpg"):
continue
path = os.path.join(dirname, fname)
if os.path.isdir(path):
continue
imgs.append(path)
그림 의 파일 이름 이 순수 숫자 이 고 자릿수 가 다 르 면 정렬 은 1 다음 에 10 이지 2 가 아 닌 10 이 므 로 정렬 을 해 야 합 니 다.핸드폰 으로 찍 은 파일 이 라면 문제 가 없습니다.files.sort(key=lambda x: int(x[:-4]))그림 전시 방향 을 회전 시 키 고 픽 셀 을 압축 합 니 다.
어떤 때 는 휴대 전화 에서 찍 은 사진 이 수평 이 므 로 세로 로 바 꿔 야 한다.
rotate 로 방향 을 회전 할 때 expand=True 라 는 인 자 를 추가 해 야 합 니 다.그렇지 않 으 면 검 은 변 이 나타 날 수 있 습 니 다.
휴대 전화의 사진 픽 셀 이 너무 높 아서 마지막 에 생 성 된 pdf 의 크기 가 적당 하도록 압축 해 야 한다.
img = Image.open(path)
if img.size[0] > img.size[1]:
im_rotate = img.rotate(90, expand=True)
size = (int(im_rotate.size[0] / 3), int(im_rotate.size[1] / 3))
im_rotate = im_rotate.resize(size)
im_rotate.save(savepath, quality=95)
else:
size = (int(img.size[0] / 3), int(img.size[1] / 3))
img = img.resize(size)
img.save(savepath, quality=95)
전체 코드스 크 립 트 로 쓰 려 면 고려 해 야 할 것 이 많 습 니 다.편리 하 게 사용 하기 위해 서 는 다양한 인 자 를 사용자 가 입력 할 수 있 도록 바 꿔 야 합 니 다.예 를 들 어 그림 폴 더 가 있 는 경로,압축 비 같은 것.
from PIL import Image
import os
import img2pdf
flag = False
while not flag:
dirname = input(" ( d:/wlzcool):")
flag = os.path.exists(dirname)
if not flag:
print(" !")
saveflag = False
while not saveflag:
savedirname = input(" ( d:/wlzcool2):")
saveflag = os.path.exists(savedirname)
if not saveflag:
print(" !")
automakedir = input(" ?( Y/ N):")
if automakedir.strip().upper() == "Y":
os.makedirs(savedirname)
saveflag = True
files = os.listdir(dirname)
reductionFactor = int(input(" ( 3):"))
if reductionFactor <= 0:
reductionFactor = 3
isConvertBlack = input(" ?( Y/ N):").strip().upper() == "Y"
for fname in files:
if not fname.endswith(".jpg"):
continue
path = os.path.join(dirname, fname)
savePath = os.path.join(savedirname, fname)
if os.path.isdir(path):
continue
img = Image.open(path)
if img.size[0] > img.size[1]:
im_rotate = img.rotate(90, expand=True)
size = (int(im_rotate.size[0] / reductionFactor), int(im_rotate.size[1] / reductionFactor))
im_rotate = im_rotate.resize(size)
if isConvertBlack:
im_rotate = im_rotate.convert("L")
im_rotate.save(savePath, quality=95)
else:
size = (int(img.size[0] / reductionFactor), int(img.size[1] / reductionFactor))
img = img.resize(size)
if isConvertBlack:
img = img.convert("L")
img.save(savePath, quality=95)
filename = input(" ( : ):")
with open(filename + ".pdf", "wb") as f:
imgs = []
files = os.listdir(savedirname)
for fname in files:
if not fname.endswith(".jpg"):
continue
path = os.path.join(savedirname, fname)
if os.path.isdir(path):
continue
imgs.append(path)
f.write(img2pdf.convert(imgs))
전체 코드스 크 립 트 로 쓰 려 면 고려 해 야 할 것 이 많 습 니 다.편리 하 게 사용 하기 위해 서 는 다양한 인 자 를 사용자 가 입력 할 수 있 도록 바 꿔 야 합 니 다.예 를 들 어 그림 폴 더 가 있 는 경로,압축 비 같은 것.
from PIL import Image
import os
import img2pdf
flag = False
while not flag:
dirname = input(" ( d:/wlzcool):")
flag = os.path.exists(dirname)
if not flag:
print(" !")
saveflag = False
while not saveflag:
savedirname = input(" ( d:/wlzcool2):")
saveflag = os.path.exists(savedirname)
if not saveflag:
print(" !")
automakedir = input(" ?( Y/ N):")
if automakedir.strip().upper() == "Y":
os.makedirs(savedirname)
saveflag = True
files = os.listdir(dirname)
reductionFactor = int(input(" ( 3):"))
if reductionFactor <= 0:
reductionFactor = 3
isConvertBlack = input(" ?( Y/ N):").strip().upper() == "Y"
for fname in files:
if not fname.endswith(".jpg"):
continue
path = os.path.join(dirname, fname)
savePath = os.path.join(savedirname, fname)
if os.path.isdir(path):
continue
img = Image.open(path)
if img.size[0] > img.size[1]:
im_rotate = img.rotate(90, expand=True)
size = (int(im_rotate.size[0] / reductionFactor), int(im_rotate.size[1] / reductionFactor))
im_rotate = im_rotate.resize(size)
if isConvertBlack:
im_rotate = im_rotate.convert("L")
im_rotate.save(savePath, quality=95)
else:
size = (int(img.size[0] / reductionFactor), int(img.size[1] / reductionFactor))
img = img.resize(size)
if isConvertBlack:
img = img.convert("L")
img.save(savePath, quality=95)
filename = input(" ( : ):")
with open(filename + ".pdf", "wb") as f:
imgs = []
files = os.listdir(savedirname)
for fname in files:
if not fname.endswith(".jpg"):
continue
path = os.path.join(savedirname, fname)
if os.path.isdir(path):
continue
imgs.append(path)
f.write(img2pdf.convert(imgs))
스 크 립 트 를 exe 로 압축 하기모든 컴퓨터 에 Python 환경 이 있 는 것 은 아 닙 니 다.우 리 는 스 크 립 트 를 exe 로 포장 하여 임의의 컴퓨터 에서 사용 하기에 편리 하도록 해 야 합 니 다.쓰다 PyInstaller 가 스 크 립 트 를 포장 합 니 다.
설치 하 다. PyInstaller
pip install pyinstaller
스 크 립 트 패키지스 크 립 트 가 있 는 경로 의 cmd 에서 다음 명령 을 실행 하면 됩 니 다.
pyinstaller -F yourprogram.py
총결산인생 이 짧 습 니 다.저 는 Python 을 사용 합 니 다.강력 한 제3자 창고 의 도움 을 받 아 우 리 는 아주 적은 시간 만 에 재 미 있 는 작은 기능 을 개발 할 수 있 습 니 다.
이상 은 Python 여러 장의 그림 이 하나의 pdf 로 합 쳐 진 참고 예제 의 상세 한 내용 입 니 다.Python 그림 이 pdf 로 합 쳐 진 것 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.