python实现图片转PDF
import os
from PIL import Image
from reportlab.pdfgen import canvas
def image_resize(img, *args, multiple=None):
"""
图片缩放
如果按倍数缩放图片,则不用传args, 否则要传入需要缩放的width(宽)、height(高)
:param img: 图片路径
:param multiple: 缩放倍数, int or float default None
:return:
"""
image = Image.open(img)
width, height = image.size
try:
if multiple:
image.resize((int(width * multiple), int(height * multiple)), Image.ANTIALIAS).save(img, quality=95,
dpi=(72, 72))
else:
len_args = len(args)
if len_args == 2:
width, height = args
image.resize((width, height), Image.ANTIALIAS).save(img, quality=95, dpi=(72, 72))
else:
raise ValueError('values error (expected 2, got %s)' % len_args)
finally:
image.close()
def image_to_pdf(img, pdf_path=None, resize=True):
"""
图片转PDF
:param img: 图片路径
:param pdf_path: 生成的PDF路径
:param resize: 是否缩放图片至A4大小
:return: None
"""
pix_x, pix_y = 595, 842 # 分辨率为72像素时的A4纸大小
if not pdf_path:
pdf_path = f'{os.path.splitext(img)[0]}.pdf'
w, h = Image.open(img).size
if resize:
w, h = image_resize(img, pix_x, pix_y)
width = (pix_x - w) // 2
height = (pix_y - h) // 2
user = canvas.Canvas(pdf_path)
if width > 1 and height > 1: # 图片size是否小于最小值
user.drawImage(img, width, height) # PDF中居中显示
else:
user.drawImage(img, 0, 0)
else:
user = canvas.Canvas(pdf_path, pagesize=(w, h))
user.drawImage(img, 0, 0)
user.showPage()
user.save()
本文来自博客园,仅供参考学习,如有不当之处还望不吝赐教,不胜感激!转载请注明原文链接:https://www.cnblogs.com/rong-z/p/14959596.html
作者:cnblogs用户
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人