图片格式转换可以利用各种软件

今天介绍一下如何使用 Python 实现各种图片格式的转换

1. SVG 转其他格式

读取 SVG 格式文件,需要安装 svglib 库

pip install svglib

将 SVG 图片保存为其他格式图片需要用到 reportlab 库

pip install reportlab

1.1 读取 SVG 图片

from svglib.svglib import svg2rlg

drawing = svg2rlg("circos.svg")

1.2 SVG 转 PNG

from reportlab.graphics import renderPM

from svglib.svglib import svg2rlg

drawing = svg2rlg("circos.svg")

renderPM.drawToFile(drawing, "circos.png", fmt="PNG")

1.3 SVG 转 PDF

from reportlab.graphics import renderPDF

from svglib.svglib import svg2rlg

drawing = svg2rlg("circos.svg")

renderPDF.drawToFile(drawing, "circos.pdf")

1.4 SVG 转其他格式

renderPM.drawToFile(

d,

fn,

fmt='GIF',

dpi=72,

bg=16777215,

configPIL=None,

showBoundary=,

)

可以通过设置 fmt 来选择输出格式,

fmt 支持:

'GIF', 'TIFF','TIFFP','TIFFL','TIF','TIFF1' 'PNG','BMP', 'PPM', 'JPG','JPEG'

2. PNG 转其他格式

读取 PNG 图片 使用到了 Pillow 库

pip install Pillow

2.1 PNG 转 JPG

from PIL import Image

img = Image.open('circos.png')

img.save(r'pil_circos.jpg')

2.2 PNG 转 SVG

def toSVG(infile, outfile):

image = Image.open(infile).convert('RGBA')

data = image.load()

width, height = image.size

out = open(outfile, "w")

out.write('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n')

out.write('

width="%(x)i" height="%(y)i" viewBox="0 0 %(x)i %(y)i">\n' % \

{'x': width, 'y': height})

for y in range(height):

for x in range(width):

rgba = data[x, y]

rgb = '#%02x%02x%02x' % rgba[:3]

if rgba[3] > 0:

out.write('

fill-opacity="%.2f" />\n' % (x, y, rgb, rgba[3]/255.0))

out.write('

\n')

out.close()

toSVG('heart.jpeg', 'heart.svg')

2.3 PNG 转 PDF

from PIL import Image

img = Image.open('circos.png')

img.convert('RGB')

img.save('pil_circos.pdf')

2.4 多个 PNG 合并为 PDF

path = 'png file path'

img_list = [Image.open(os.path.join(path, f)).convert('RGB') for f in os.listdir(path)

if f.lower().endswith('png')]

img = img_list.pop(0)

img.save('pil_circos.pdf', resolution=10.0, save_all=True, append_images=img_list)

这种方法会损失分辨率

3. JPG

JPG 或者说 JPEG 的转换与 PNG 格式相同,上面的代码可以复用。

4. 合并多个 PDF 文件

使用到 PyPDF2 库

pip install PyPDF2

使用

from PyPDF2 import PdfFileMerger

import os

path = 'path of pdf file'

pdf_list = [f for f in os.listdir(path) if f.lower().endswith('pdf')]

pdf_merge = PdfFileMerger()

for f in pdf_list:

pdf_merge.append(f)

pdf_merge.write('merge_pdf.pdf')

可以将每张图片先转换为单个 PDF 文件,然后合并 PDF 文件,避免分辨率损失。

python图片保存jpg、show变成bmp_Python 图片格式转换相关推荐

  1. 利用form表单上传图片,图片保存到本地,得到图片名字(后期可以将图片名字存进数据库)

    利用form表单上传图片,图片保存到本地,得到图片名字(后期可以将图片名字存进数据库) html部分:enctype="multipart/form-data" 一定要加! < ...

  2. python3将base64格式的图片保存为MD5值的图片

    python3将base64格式的图片保存为MD5值的图片 import os, base64 import cv2 import numpy as np import hashlib# QQ 273 ...

  3. mac下使用命令行工具sips实现单个或批量图片缩放、旋转、翻转和格式转换

    sips是mac下的一个命令行工具,可以实现单个批量图片裁剪.缩放.旋转.翻转和格式转换. 指定宽度为600像素,高度自适应缩放 sips -Z 600 test.jpg 批量指定宽度为600像素,并 ...

  4. 没有表情包都不好意思说自己是年轻人——python一键保存几千张表情包图片

    现在年轻人聊天,不带点表情包都不好意思说自己是年轻人- 刚认识的朋友丢几个表情包出去分分钟拉进关系,女朋友生闷气了整两个表情包开心一下,也可以化解尴尬,没时间打字整两张表情包,礼貌而不失尴尬. 一.欲 ...

  5. php长按图片保存mui,Vue+mui实现图片的本地缓存

    这篇文章主要介绍了Vue+mui实现图片的本地缓存的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下 下面一段代码给大家分享基于Vue+mui实现图片的本地缓存,具体代码如下所示: c ...

  6. java图片保存到数据库_java中将图片保存到数据库中

    在实际的开发中,我们可能需要将图片.影音等文件直接保存到数据库中,然后通过编程方式将数据读出进行使用.例如将读出的图片数据显示出来,将读出的电影文件播放出来. 二进制数据直接保存到文件和从文件中读出非 ...

  7. delphi 安卓图片保存数据库_delphi数据库存储图片

    delphi数据库存储图片 发布时间:2020-06-24 19:16:33 来源:51CTO 阅读:411 作者:鹅倌 栏目:数据库 --存 str_sql := 'update photo set ...

  8. python下的日期与时间(时间格式转换、时间戳处理,时间差处理)

    python下的日期与时间 一.在Python中,时间主要有三种表示形式, 1.时间戳(TimeStamp):1970年1月1日之后的秒 2.时间元组格式化形式 包含了:年.日.星期 得到time.s ...

  9. python使用ffmpeg库高效免费完成音频格式转换

    在生活中,我们因为种种原因经常需要对音频格式文件进行转换. 使用已经发布的各种音频格式转换软件进行音频格式转换时在没有会员的情况下,最终转换的音频文件在开头或者末尾会有软件植入广告,这就是噪音,此时转 ...

  10. python学习笔记之doc和docx的格式转换

    from win32com.client import Dispatch import docx def doc2docx(p0):'''文档格式转换doc--->>>docx:pa ...

最新文章

  1. PreferenceActivity是什么?
  2. 帆软正则表达式定义规则
  3. boost::geometry::strategy::transform::matrix_transformer用法的测试程序
  4. html设置文字超过字数_html文本控制显示字数超出用省略号的方法
  5. 【AC自动机】单词(luogu 3966/ybtoj AC自动机-2)
  6. php 长微博程序,长微博生成工具PHP源码 根据文字生成长微博图片 - substr_count
  7. java 负载均衡_java负载均衡 - 岁月静好I的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. python初学者_初学者使用Python的完整介绍
  9. 数学差、物理差、英语又烂的放牛娃,后来竟成了清华校长,还做出了诺奖级的研究成果...
  10. 5-35 有理数均值 (20分)
  11. 人工神经网络(Artificial Neural Netwroks)笔记-消除样本顺序的BP算法
  12. 美国河流出现神奇冰盘 顺着水流不断旋转
  13. 李宏毅自然语言处理——问答任务
  14. 惠斯通电桥电路 轴扭矩 计算
  15. redis 源码全解析
  16. 初体验scrapy-爬取豆瓣250电影数据
  17. 微信小助手 for mac(WeChatPlugin)使用攻略
  18. Keil 中“last line of file ends without a newline”的解决
  19. Warning: Accessing non-existent property ‘cat‘ of module exports inside circular dependency
  20. 小学生python编程教程-小学生python编程在线教育-小码精灵编程线上教育机构

热门文章

  1. Adobe的后期摄影图片处理软件Photoshop Lightroom(Lr) 6.2版本下载与安装教程
  2. kirin710f是什么处理器_kirin710什么处理器
  3. 计算机毕业设计JAVA图书个性化推荐系统mybatis+源码+调试部署+系统+数据库+lw
  4. 浅谈FineReport常用函数及使用时报错的解决办法
  5. LINK : fatal error LNK1104: 无法打开文件“mfc71.lib”的原因又一例
  6. Rhinoceros mac版(犀牛三维建模软件)中文版
  7. 微信小程序在开发工具上可以编译显示,但是手机预览请求不到数据
  8. 桌面文件丢失如何找回?这两个方法值得一试
  9. aar打包依赖 android_打包依赖.aar文件以及坑总结
  10. window 删除文件报错显示被程序占用 强制删除被占用的文件