今天朋友让我给他弄个长图,就是无缝衔接,宽度一致。大概是这样:

长图

之前就弄了一次,放到了PS里面,调整画布大小,一个个的放进去调整宽高,今天又来一次,很是麻烦。于是,就百度了一些在线制作网站,逛了逛github,结果,要么是要求宽高一致,要么就是默认按第一张宽度,后面图片宽度不够的白色补足,要么就是超过多少张收费。于是,一气之下就写了一个。

思路:用户选择图片,用户选择保存路径,使用Image读取图片,按照第一张图片调整大小,保存到保存路径(生成了OUT目录,防止读取时有其他图片),然后再从保存路径将这些图片使用paste连接在一起。

代码

from PIL import Image
import os
import sys
import tkinter as tk
from tkinter import filedialog# 图片格式
IMAGES_FORMAT = [".JPG", ".jpg", ".png", ".PNG", ".JPEG", ".jpeg"]
root = tk.Tk()
root.withdraw()
# 选择图片
print("请选择图片...")
pic_paths = filedialog.askopenfilenames()
# 选择保存路径
print("请选择长图保存路径...")
save_path = filedialog.askdirectory()
save_path = save_path + "/OUT"
root.destroy()
isExists = os.path.exists(save_path)
# 判断结果
if not isExists:# 如果不存在则创建目录os.makedirs(save_path)
print("调整后图片及长图保存路径:", save_path)
print("获得图片如下:")
flag = 0
width = 0
long_high = 0
for pic in pic_paths:for item in IMAGES_FORMAT:if os.path.splitext(pic)[1] != item:passelse:print(pic)pic_name = pic.split("/")[-1]img = Image.open(pic)  # 读取图片(x, y) = img.size  # 获得图片大小if flag == 0:width = xflag = 1high = int(y * width / x)  # 计算高度long_high += highout = img.resize((width, high), Image.ANTIALIAS)  # 调整图片大小out.save(save_path + "/" + pic_name)  # 保存图片
print("调整后图片保存完成,开始制作长图...")
long_img = Image.new(mode='RGB', size=(width, long_high))
img_paths = [name for name in os.listdir(save_path) for item in IMAGES_FORMAT ifos.path.splitext(name)[1] == item]
paste_high = 0
for pic in img_paths:for item in IMAGES_FORMAT:if os.path.splitext(pic)[1] != item:passelse:img = Image.open(save_path + "/" + pic)  # 读取图片(x, y) = img.size  # 获得图片大小long_img.paste(img, (0, paste_high))  # 图片及位置(左上角坐标)paste_high += y
long_img.save(save_path + "/" + "长图.jpg")
print("完成...")
os.system("pause")

结果截图

选择图片

选择保存路径

命令窗口显示制作情况

调整后的图片及长图

随后,使用pyinstall -F xxx.py进行打包,发送给他了。

相对于PS的结果,代码方式形成的长图(作用照片30-40张)虽然达不到9、10兆,但是也能4、5兆左右,在手机端查看还是很清晰。如果你想形成横向的,或者说图片直接有空隙,那么修改长图宽高以及paste函数的图片左上角位置参数即可。

python-长宽不同多张图片生成一列长图相关推荐

  1. 求三个长方柱的体积,数据成员包括length(长)、width(高)。要求用成员函数实现以下功能: (1)用键盘分别输入三个长方柱的长宽高; (2)计算长方柱的体积;(3)输出3个长方柱的体积。

    项目要求: 需要求三个长方柱的体积,请编写一个基于对象的程序,数据成员包括length(长).width(高).要求用成员函数实现以下功能: (1)用键盘分别输入三个长方柱的长宽高: (2)计算长方柱 ...

  2. vue项目将多张图片生成一个gif动图

    当前做项目有一个需求是将多张图片生成一个gif动图的形式 类似下面图片几张图片叠加生成一个gif动图 图片涉及工作隐私,就不公开啦 我们要引入一个gif.js的引入包,但是他没有直接引入的方式,只能从 ...

  3. Python学习笔记_多张图片生成马赛克图

    原文链接:使用Python简单实现马赛克拼图 代码如下: import os import time from functools import reduce from threading impor ...

  4. python学习之将两张图片生成为全景图片

    文章目录 1.全景图片的介绍 2.如何实现 2.1.实现原理 2.2.实现代码 3.运行效果 1.全景图片的介绍 全景图通过广角的表现手段以及绘画.相片.视频.三维模型等形式,尽可能多表现出周围的环境 ...

  5. 解决 python pytplot绘图 图片长宽无法调整、文件保存为矢量图的问题记录。

    这个问题困扰我许久,本身文档提供的控制函数都试过了,文档见下.https://pytplot.readthedocs.io/en/latest/index.html 诸如这些控件调整都是失败的. ws ...

  6. pdfbox pdf转图片,图片长宽大小与pdf保持一致

    需求 需要将pdf转图片,用作预览,图片需要与pdf页的长宽大小保持一致. 依赖 org.apache.pdfbox:pdfbox:2.0.26 分析过程 pdfbox源码中,设置图片长宽大小的方法如 ...

  7. 5.前端CSS之基本属性(长宽,字体,文体,背景图片,阴影,border画圆,display)

    1.块儿标签长宽height,width块儿标签可以设置长宽,设置长宽后依然独占一行 h1-h6,p,div行内标签无法设置长宽 写了 也不会生效 i,u,s,b span2.字体样式:font-fa ...

  8. Blender 插件开发 计算模型长宽高

    模型的长宽高在写一些需要计算的插件时还是挺有用的,可以通过object.dimensions(模型尺寸)知道,可是遇到复数模型组成的物体计算长宽高就比较麻烦了,像我这个模型就是复数子模型组成的,用一个 ...

  9. Matplotlib 常用画图命令总结:使用 Python 在论文中画出一手漂亮的数据图

    介绍 本文不是一篇详尽的.从简到繁的 Matplotlib 画图教程,而是用各种例子快速直观地让读者上手 Matplotlib 画图中的一些常用的.基础的操作.本文不对各种数据图(折线图.柱状图等)作 ...

最新文章

  1. LIVE 预告 | 佐治亚理工杨笛一:少数据,多框架的自然语言处理
  2. 滴滴AI负责人叶杰平:你的每一次出行,都已有AI落地的助力 | MEET 2020
  3. python怎么加载图片-如何用python获取图像
  4. 深度学习材料:从感知机到深度网络A Deep Learning Tutorial: From Perceptrons to Deep Networks
  5. asp.net faq: 在html文件中,用js获取session
  6. 小程序 mpvue 生命周期一览
  7. Mysql中SQL语句不使用索引的情况
  8. spring_装配Bean
  9. 字符串在Python中的本质是一个序列。 数字类型不是序列,不是可迭代对象,只能看做一个整体不可分割...
  10. 奇安信代码安全实验室招贤纳士
  11. AI学习笔记(十六)中文分词
  12. 又一种页面之间传值方式
  13. pythonATM,购物车项目实战6-用户登录功能的实现
  14. PHPWord通过docx模板替换标签,最终生成pdf文件
  15. 大话GraphQL新手上车
  16. 线性代数(numpy.linalg)
  17. 摄像机标定:像素焦距与毫米焦距转换
  18. 字符编码常识及问题解析
  19. ppt密码怎么设置,ppt权限密码如何破解?
  20. sklearn中StandardScaler()

热门文章

  1. rsync实现断点续传
  2. 2021-04-19-记录学习linux
  3. jsp获取静态服务器文件路径,11、统一处理异常、处理静态资源访问、项目中的绝对地址跟相对地址问题...
  4. CSP-2019day1题解报告
  5. 迅雷下载器-FDM,看2019新年大电影
  6. HIVE 总体标准差stddev()
  7. react 实现渐变色背景样式
  8. 黑苹果与白苹果的区别及其安装方式
  9. 修身修心的1000+篇文章总结
  10. 【Unity 优化篇】 | 优化专栏《导航帖》,全面学习Unity优化技巧,让我们的Unity技术上升一个档次