#需要安装PIL模块
#encoding=gbk
#-------------------------------------------------------------------------------
# Name: picRead
# Purpose:
#
# Author: wangchao
#
# Created: 27/06/2014
# Copyright: (c) wangchao 2014
# Licence: <your licence>
#-------------------------------------------------------------------------------
fromimportImage
def():
='Z:/360pic/116_0618/IMGP3828.JPG'
=Image.open(filename)
=.size #图片的长和宽
print imgSize
=(imgSize)#图片的长边
print maxSize
=(imgSize)#图片的短边
print minSizeif=='__main__':
()


判断图片分辨率并修改
# -*- coding: utf-8 -*-

import os,sys,Image

rootDir = r'c:\\images'
targetDir = r'c:\\imagesover'

def encodeChinese(msg):
    type = sys.getfilesystemencoding()
    return msg.decode('UTF-8').encode(type)

errFile = open(r'c:\\errFile.txt','w')

def judgeSize(im):
    #判断图片分辨率,如果最大边超过1024返回False,如果不超过返回True
        mySize = im.size
    maxValue = max(mySize)
        minValue = min(mySize)
    if(maxValue > 1024):
        return False
    else:
        return True

def returnSize(im):
    #返回图片大小,返回两个值,第一个返回值总为最大
    max,min = im.size
    if max > min:
        return max,min
    else:
        return min,max

def changeSize(im,max,min):
    value = max/1024
    min = min/value
    newimg = im.resize((1024,min),Image.ANTIALIAS)
    return newimg

def main():
    for parent,dirnames,filenames in os.walk(rootDir):
        for filename in filenames:
            fName = filename
            filename = parent + os.sep + filename
            fPostfix = os.path.splitext(filename)[1]
            try:
                img = Image.open(filename)
            except:
                print filename
                print encodeChinese('打开这个文件出错')
                continue
            #img.load()
            print filename
            print fPostfix
            if(fPostfix !='.jpg' and fPostfix !='.png' and fPostfix != '.JPG' and fPostfix != '.PNG'):
                errFile.write(str(filename) + '\\n')
                errFile.write(encodeChinese('上面这个文件不是图片,请检查...') + '\\n')
                errFile.write('\\n')
            else:
                print 'juageSize()'
                if(judgeSize(img) == False):
                    print 'judgeSize == False'
                    max,min = returnSize(img)
                    newimg = changeSize(img,max,min)
                    newimg.save(targetDir + os.sep + fName)
                    print str(targetDir + os.sep + fName) 
                    print encodeChinese('保存完毕')
    print encodeChinese('处理完毕')
    errFile.close()

main()

python使用PIL库读取图片的像素值  

下载LOFTER客户端

想做一个横板 的过关游戏,没有图片,就用photoshop从别人的游戏截屏中抽了一些图片出来,发现一共有74张图片,每张图片都在一个图层中,听说 photoshop有图层批量导出的功能,很开心。但发现一个问题,就是图片批量导出的时候,会把透明的像素也导出来了。这个第一张图片会有很多空着的透 明像素,好像这个没有办法解决。

废话少说,我们先批量导出所有的图片,方法如下。

用image模块,可以用getpixel获得像素值,给你个例子吧。得到的像素值应该是(R,G,B,A),大家读读看每个图片是什么。
#!/usr/bin/env python  
import Image  
import sys   
im = Image.open(sys.argv[1])  
width = im.size[0]  
height = im.size[1]  
print "/* width:%d */"%(width)  
print "/* height:%d */"%(height)  
count = 0   
for h in range(0, height):  
  for w in range(0, width):  
    pixel = im.getpixel((w, h))   
    for i in range(0,3):  
      count = (count+1)%16  
      if (count == 0):   
        print "0x%02x,/n"%(pixel[i]),  
      else:  
        print "0x%02x,"%(pixel[i]),

#设置要拷贝的区域,这是我们找到的有像素的区域。
    
 #将im表示的图片对象拷贝到region中,大小为(400*400)像素。这个region可以用来后续的操作(region其实就是一个Image对象),box变量是一个四元组(左,上,右,下)。
    
 region = im.crop(box)
    
region.save( "fileout.png" )

用python把图片像素点数据转换成文本

工作中要把bmp图片的数据转换成数组放到uboot代码中,因为有几张图片,使用bin转换成文本的工具还不如自己写脚本方便来得快

1. #!/usr/bin/env python  
2. import Image  
3. import sys   
4. im = Image.open(sys.argv[1])  
5. width = im.size[0]  
6. height = im.size[1]  
7. print "/* width:%d */"%(width)  
8. print "/* height:%d */"%(height)  
9. count = 0   
10. for h in range(0, height):  
11. for w in range(0, width):  
12.     pixel = im.getpixel((w, h))   
13. for i in range(0,3):  
14. 1)%16  
15. if (count == 0):   
16. print "0x%02x,/n"%(pixel[i]),  
17. else:  
18. print "0x%02x,"%(pixel[i]),