近况
好像很久没有更新的样子了。现在都要准备考研了我想很长一段时间都不怎么会更新这里了
以上
正文
原先是打算把目录下的几张4*4的游戏行走图素材切割成单张图片使用的,所以用了Python写了段程序来切割图片,然而切割出来的图片背景都变成白色了,丢失了alpha信息。于是跟屌泽探讨了一下,稍微在这里记录下吧
下面是自己写的代码
import Image
import os
import sys
def image_split(pic_name):
pic = Image.open(pic_name)
size_sx = pic.size[0]/4
size_sy = pic.size[1]/4
region = (0,0,size_sx,size_sy)
for x in xrange(1,17):
print " [+] spliting %i of %s...\t"%(x,file_name),
img_crop = pic.crop(region)
img_crop.save('splited\\'+pic_name[:-4]+'_'+"%i"%x+".png")
print "[done]"
if x%4 == 0:
region = (0,region[1]+size_sy,size_sx,region[3]+size_sy)
else:
region = (region[0]+size_sx,region[1],region[2]+size_sx,region[3])
if __name__ == '__main__':
print "[+] getting picture files ...\t\t",
file_lst = os.listdir(os.getcwd())
print "[done]"
for file_name in file_lst:
if file_name[-4:] == ".png":
print "[+] spliting picture %s..."%file_name
try:
image_split(file_name)
except Exception, e:
pass
看起来好像是没什么问题
然后屌泽自己也写了段代码,说在他那里执行切割出来是带有alpha信息的
# def test():
# # 1 1
# # 2 4 8 6 2
# # 3 9 7 1 3
# # 4 6 4 6 4
# # 5 5
# # 6 6
# # 7 9 3 1 7
# # 8 4 2 6 8
# # 9 1 9 1 9
# # 0 0
# i = 30
# temp = i
# for x in xrange(0,i-1):
# temp = temp * i
# # print temp
# print temp%10
# def main():
# i = 5
# i = i % 10
# pass
# if __name__ == '__main__':
# # main()
# test()
import sys
from PIL import Image
# import cv2
def splitImage(spx,spy,filepath):
im = Image.open(filepath)
# im = Image
_imageWidth , _imageHeight = im.size
_eachHeight = _imageHeight / spy
_eachWidth = _imageWidth / spx
_top = 0
_left = 0
# order = 0
# imagesList = Image[]
for x in xrange(1,spx):
for y in xrange(1,spy):
savepath = filepath + str(x) + str(y) + ".png"
im.crop((_left , _top , _left + _eachWidth , _top +_eachHeight)).save(savepath)
_top = _top + _eachHeight
pass
_top = 0
_left = _left + _eachWidth
# print im.
def main():
args = sys.argv
if len(args) != 4:
return
splitImage(int(args[2]),int(args[3]),args[1])
if __name__ == '__main__':
main()
其实感觉实现的都一样,自己这里又运行了一下发现仍然没有alpha信息。
然后屌泽说了可能是pil版本问题
自己用的是官网上09年最新的1.1.7版本64位编译
而屌泽说他用的是pycharm内的2.4.0版本
WTF?!官方不是最新的才1.1.7嘛!
后来想想可能是原来的页面没有更新,其实PIL还在继续维护
后来的新版本修复了这个问题
直到现在。。又看了看当时的记录,他有一张截图出现的是pillow。一直不知道有pillow这东西,以为就只有pil,于是网上查了下,是一个替代pil的图像处理库,现在也基本上都用pillow来处理图像了。
从上面的代码也看得出,我用的import Image,而屌泽用的是form PIL import Image
他一直都是在用pillow,问了一下他他说他以为我说的pil就是pillow。。
行了现在也知道为什么他的版本会有2.4.0出来了
看来这问题最终还是pil的问题,而且一直没有更新才出现了pillow这个替代库并解决了这问题