zoukankan      html  css  js  c++  java
  • python 读取图片的尺寸、分辨率

    #需要安装PIL模块

    #encoding=gbk
    #-------------------------------------------------------------------------------
    # Name: picRead
    # Purpose:
    #
    # Author: wangchao
    #
    # Created: 27/06/2014
    # Copyright: (c) wangchao 2014
    # Licence: <your licence>
    #-------------------------------------------------------------------------------
    from PIL import Image
    def main():
      filename = 'Z:/360pic/116_0618/IMGP3828.JPG'
      img = Image.open(filename)
      imgSize = img.size #图片的长和宽
      print imgSize
      maxSize = max(imgSize) #图片的长边
      print maxSize
      minSize = min(imgSize) #图片的短边
      print minSize


    if __name__ == '__main__':
      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库读取图片的像素值  

    2015-02-20 01:59:11|  分类: Python |  标签:python  photoshop   |举报 |字号 订阅

    下载LOFTER客户端
     
    新年好,今天是大年初一。
    想做一个横板 的过关游戏,没有图片,就用photoshop从别人的游戏截屏中抽了一些图片出来,发现一共有74张图片,每张图片都在一个图层中,听说 photoshop有图层批量导出的功能,很开心。但发现一个问题,就是图片批量导出的时候,会把透明的像素也导出来了。这个第一张图片会有很多空着的透 明像素,好像这个没有办法解决。
    废话少说,我们先批量导出所有的图片,方法如下。
    python使用PIL库读取图片的像素值 - ♂苹果 - 眼睛想旅行
     这里我导出到了桌面上。看一下图片,有一大片空白像素。
    python使用PIL库读取图片的像素值 - ♂苹果 - 眼睛想旅行
    不知道photoshop有没有能不能批量导出没有透明像素的图片。反正我没有找到,我只能用最最老土的方法了。就是用python来对导出的图片分析。删除我们不要的透明像素。下边是使用python读取图片像素值的方法。
    用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 "/* %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]),
     这样我们就可以遍历整个图片像素了,在其中找出我们图片像素不是透用的区域,然后使用下边的方法把图片截取出来并保存:
    box = (100,100,500,500)#设置要拷贝的区域,这是我们找到的有像素的区域。
    #将im表示的图片对象拷贝到region中,大小为(400*400)像素。这个region可以用来后续的操作(region其实就是一个Image对象),box变量是一个四元组(左,上,右,下)。
    region = im.crop(box)
    region.save( "fileout.png" )
    下边是一个不错的教程。 
    http://onlypython.group.iteye.com/group/wiki/1371-python-graphics-library-pil-python-image-library-introduction
    另一个教程:
    一个使用pil制作验证码的方法:

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

    分类: Android好文 Linux Shell_script Android原创 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 "/* %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.       count = (count+1)%16  
    15.       if (count == 0):   
    16.         print "0x%02x,/n"%(pixel[i]),  
    17.       else:  
    18.         print "0x%02x,"%(pixel[i]),  
  • 相关阅读:
    HTTP协议一次上传多个文件的方法
    PHP中include和require的区别
    jenkins持续集成工具
    vue加强(第二天)
    VUE(第一天)
    mybatis的SQL映射(加强)
    easyPOI的上传和下载(导入和导出功能)
    shiro登录授权框架
    SpringDataJPA(ORM对象关系映射框架)
    SpringSpringMVCJPA集成
  • 原文地址:https://www.cnblogs.com/timssd/p/4735396.html
Copyright © 2011-2022 走看看