图片处理工具

这是一个使用Python编写的脚本,用于将图片批量居中并对齐。脚本需要图片的偏移量坐标信息,从指定文件夹读取图片,根据坐标调整图片位置并保存。用户可以输入图片的宽和高,支持多文件夹处理。处理后的图片将保存在新的文件夹中,方便直接使用。此脚本为减轻美术工作量而设计。
摘要由CSDN通过智能技术生成

我们从网上找来一批资源但是发现图片不是在同一个位置没有居中,这样的图片对于我们来说是不能直接使用的,所以需要把图片的像素位置整体移动一下,本来这是美术的工作,但是美术抱怨这个工作量太大了,所以这个工具就出来了。先把代码贴出来吧,python 2.7.8 版本的。

photo.py

#!/usr/bin/env python
# coding=utf-8
import os
from PIL import Image
import shutil

mainFile = u'生成'.encode("gb2312")
def CreateDir(path):
    isExists=os.path.exists(path)
 
    # 判断结果
    if not isExists:
        # 如果不存在则创建目录
        # 创建目录操作函数
        os.makedirs(path) 
 
        print path+ u'创建成功'.encode("gb2312")
        return True
    else:
        # 如果目录存在则不创建,并提示目录已存在
        #print path+u'目录已存在'.encode("gb2312")
        return False

def transparent_back(img):
    img = img.convert('RGBA')
    L, H = img.size
    #if L == 1 or H == 1:
        #return False
    
    return img

def combine_photo():
    tip = u'请输入路径:'.encode("gb2312")
    inputPath = raw_input(tip)
    
    tip = u'请输入宽W:'.encode("gb2312")
    W = raw_input(tip)
    imageW = int(W)
    
    tip = u'请输入长H:'.encode("gb2312")
    H = raw_input(tip)
    imageH = int(H)
    
    path = ''
    
    for x in inputPath:
        path += x
        if x == '\\':
            path += '\\'
    
    CreateDir(path+'\\'+mainFile)
    #print(os.listdir(path))
    for dirName in os.listdir(path):
        dealDir = path+'\\'+dirName
        print(dealDir)
        if os.path.isdir(dealDir) and dirName != mainFile:
            for pngName in os.listdir(dealDir):
                if os.path.isfile(dealDir+'\\'+pngName):
                    img1 = Image.open(dealDir+'\\'+pngName)
                    img2 = transparent_back(img1)
                    
                    str = pngName[0:-4]
                    saveFile = path+'\\'+mainFile+'\\'+dirName
                    if img2 != False:
                        toImage = Image.new('RGBA', (imageW, imageH),(255,255,255,0))
                        
                        print u'处理图片'.encode("gb2312"),dealDir+'\\'+pngName
                        
                        pos = []
                        txtName = dealDir+'\\Placements\\'+str+'.txt'
                        print u'打开目标txt'.encode("gb2312"),txtName
                        fp = open(txtName,'r')
                        done = False
                        while not done:
                            aline = fp.readline()
                            if aline != '' and aline != ' ':
                                if int(aline):
                                    pos.append(int(aline))
                                else:
                                    pos.append(0)
                            else:
                                done = True
                        fp.close()
                        if len(pos) == 0:
                            pos = [0,0]
                        r, g, b, a = img2.split()
                        toImage.paste(img2, (imageW/2+pos[0]-24,imageH/2+pos[1]-18))
                        
                        CreateDir(saveFile)
                        toImage.save(saveFile+'\\'+str+'.png')
                    else:
                        print u'复制文件'.encode("gb2312"),
                        shutil.copy(dealDir+'\\'+pngName,saveFile+'\\'+str+'.png')
                    
 

combine_photo() 

代码也不是很复杂,支持多文件夹处理,但是需要每个图片的偏移量坐标,如果没有坐标的话也是白搭,还是得找美术。下面看下怎么使用:

 

 

 这个文件夹 Placements 需要注意放到图片里面,里面是偏移量坐标

 每张图片都有一个对应的偏移量坐标,x坐标 和 y坐标:

 执行也很简单,如:

 enter等执行完,在文件夹里面会生成一个 生成 文件夹

 打开里面就是生成好的图片

这个时候你在看图片就是居中的图片了,我们就可以直接拿来用了,同时脚本支持设置图片的大小,我设置的就是500*500

好了,就分享到这里了。

图片处理工具脚本,在这里共分享使用。-互联网文档类资源-CSDN下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值