欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【Python3脚本分享】三个常用图片处理脚本(镜像处理,gif分解,多图合并)

程序员文章站 2022-05-04 11:45:00
在做杂项的时候写的一些脚本,这里选了常用的三个图片处理的脚本。...

工具虽然方便,但处理图片较多时,总不可能一张张的使用工具吧,这个时候就需要使用到脚本了。这里分享了我在做图片隐写时常用到的三个脚本

  • 图片镜像处理。
  • gif分解。
  • 多张图片合成。

0x01.镜像处理

  • 使用PIL库。
  • 思路:对源图片的每一个像素点做镜像变换。
# 图片镜像处理
from PIL import Image
im = Image.open("source.jpg") #源图片
pim = im.load()
an = Image.open("target.jpg") #输出图片
ans = an.load()
for i in range(im.size[0]):
    for j in range(im.size[1]):
        ans[i, j] = pim[im.size[0]-i-1, j]
an.show() #打开输出图片

0x02.gif分解

  • 使用PIL库。
  • 思路:对源gif的每一真,复制出来储存,统一格式命名。
# 将gif图分解成多张png
from PIL import Image

im = Image.open('glance.gif')

def iter_frames(im):
    try:
        i = 0
        while 1:
            im.seek(i)
            imframe = im.copy()
            if i == 0:
                palette = imframe.getpalette()
            else:
                imframe.putpalette(palette)
            yield imframe
            i += 1
    except EOFError:
        pass


for i, frame in enumerate(iter_frames(im)):
    frame.save('glance' + str(i) + '.png', **frame.info) #最终图片的保存格式


0x03.多图合并

  • 使用PIL库。
  • 前提:需要保证每一张图片前缀统一,比如:都是gg1.png,gg2.png之类的。
  • 思路:创建一张新图片,将原来的每张图片按照指定位置填充进去。
#拼接图像.py
from PIL import Image
path = "D:\DeskTop\CTF\gifs\gg" # 源文件名,需要精确到目录名到多张图片的统一前缀
save_path = "D:\DeskTop\CTF\gifs"   # 输出文件路径
target_image="final.png" # 输出图片的名字

im = Image.new('RGBA',(2*201,600)) #创建新照片,根据实际来
imagefile = [] #存储所有的图像的名称
width = 0

for i in range(0,101): #这里填图像的张数
    imagefile.append(Image.open(path+str(i)+'.png')) #遍历,将图像名称存入imagfile

for image in imagefile:
    im.paste(image,(width,0,2+width,600)) #将图片张贴到另一张图片上
    width = width +2
im.save(save_path+target_image)
im.show()

本文地址:https://blog.csdn.net/ATFWUS/article/details/107441872