-
Python: 사진 to pdf 파일 변환컴퓨터/파이썬 2021. 10. 23. 23:56728x90반응형
사진 파일들을 pdf에 담을 간단한 작업이 자주 필요했다.
아래를 실행하면 원하는 사진들이 "~~. pdf"로 저장된다.
사용법
pdf.py에 코드를 저장하고 argument를 전달한다.
-f (필수) 뒤 사진들 | -p (옵션) 저장할 경로 | -n (옵션) 원하는 pdf 이름
# 사용법 python pdf.py -f 1.jpg E:\2.jpg python pdf.py -f 1.jpg E:\2.jpg -p "E:\"
pdf.py
from argparse import ArgumentParser from PIL import Image import os import random # 기본 저장되는 경로 PATH = "C:\\Users\\user\\Desktop\\" if __name__ == "__main__": parser = ArgumentParser() parser.add_argument("--files", "-f", type=str, required=True, nargs="+") parser.add_argument("--path", "-p", type=str) parser.add_argument("--name", "-n", type=str) args = parser.parse_args() img_list = [] base_img = Image.open(args.files[0]).convert("RGB") # PNG는 RGBA -> RGB for img_path in args.files[1:]: img_list.append(Image.open(img_path)) if args.name and not args.name.endswith(".pdf"): args.name = ".pdf" image_name = args.name if args.name else f"이름_{random.randint(1, 100)}.pdf" if args.path: pdf_path = os.path.join(args.path, image_name) else: pdf_path = os.path.join(PATH, image_name) base_img.save( pdf_path, "PDF", resolution=100.0, save_all=True, append_images=img_list ) print(f"Saved to {pdf_path}")
Rust pyo3
use pyo3::prelude::*; use pyo3::wrap_pyfunction; use pyo3::types::PyTuple; use std::path::Path; use image::{ImageFormat, RgbImage}; #[pyfunction] fn merge_images(py: Python, files: &PyTuple, path: Option<&str>, name: Option<&str>) -> PyResult<()> { let files: Vec<String> = files.iter().map(|x| x.extract().unwrap()).collect(); let mut images = Vec::new(); let base_img = image::open(&Path::new(&files[0])).unwrap().into_rgb(); for img_path in &files[1..] { images.push(image::open(&Path::new(img_path)).unwrap().into_rgb()); } let image_name = if let Some(name) = name { if !name.ends_with(".pdf") { format!("{}.pdf", name) } else { name.to_string() } } else { format!("이름_{}.pdf", random::<u32>()) }; let pdf_path = if let Some(path) = path { Path::new(path).join(&image_name) } else { Path::new("C:\\Users\\user\\Desktop\\").join(&image_name) }; base_img.save( &pdf_path, ImageFormat::Pdf, &images, )?; println!("Saved to {}", pdf_path.display()); Ok(()) } #[pymodule] fn image_merge(_py: Python, m: &PyModule) -> PyResult<()> { m.add_wrapped(wrap_pyfunction!(merge_images))?; Ok(()) }
728x90'컴퓨터 > 파이썬' 카테고리의 다른 글
Python: Mito 파이썬 데이터 분석 라이브러리 (0) 2022.01.15 Python: 간단한 streamlit 앱 만들면서 배운 점 (0) 2021.09.19 FastAPI + discord.py snippet (0) 2021.08.24