#需要安装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- -*-

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)
    ):
        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/
    min = min/value
    newimg = im.resize((,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)[]
            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   |举报 |字号 订阅

 
新年好,今天是大年初一。

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

这里我导出到了桌面上。看一下图片,有一大片空白像素。

不知道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 "/* 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]),

这样我们就可以遍历整个图片像素了,在其中找出我们图片像素不是透用的区域,然后使用下边的方法把图片截取出来并保存:

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 2010-07-13 11:28 7177人阅读 评论(0) 收藏 举报

工作中要把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. count = (count+1)%16
  15. if (count == 0):
  16. print "0x%02x,/n"%(pixel[i]),
  17. else:
  18. print "0x%02x,"%(pixel[i]),

python 读取图片的尺寸、分辨率的更多相关文章

  1. Python读取图片尺寸、图片格式

    Python读取图片尺寸.图片格式 需要用到PIL模块,使用pip安装Pillow.Pillow是从PIL fork过来的Python 图片库. from PIL import Image im = ...

  2. 利用Python读取图片exif敏感信息

    众所周知,现在很多的照相机等软件,拍摄会有选项,是否包含位置信息等. 当然有的人会说,我在微信中查看图片exif信息并没有啊,这是因为你发送到微信服务器的时候,微信帮你完成了保密工作. 常见的图片中包 ...

  3. java读取图片的(尺寸、拍摄日期、标记)等EXIF信息

    1.metadata-extractor是 处理图片EXIF信息的开源项目,最新代码及下载地址:https://github.com/drewnoakes/metadata-extractor 2.本 ...

  4. Python读取图片,并保存为矩阵

    from scipy.misc import imread,imshow img = imread('D:test.bmp') print img[:,:,2].shape imshow() 注意im ...

  5. Python中Opencv和PIL.Image读取图片的差异对比

    近日,在进行深度学习进行推理的时候,发现不管怎么样都得不出正确的结果,再仔细和正确的代码进行对比了后发现原来是Python中不同的库读取的图片数组是有差异的. image = np.array(Ima ...

  6. python 读取并显示图片的两种方法

    在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 这两个库操作图片.本人偏爱 matpoltlib,因为它的语法更像 matlab. 一.matplotlib 1. ...

  7. python 修改、读取图片元数据

    图片元数据 图片元数据(metadata)是嵌入到图片文件中的一些标签.比较像文件属性,但是种类繁多.常见的几种标准有: EXIF:通常被数码相机在拍摄照片时自动添加,比如相机型号.镜头.曝光.图片尺 ...

  8. Python读取excel中的图片

    作为Java程序员,Java自然是最主要的编程语言.但是Java适合完成大型项目,对于平时工作中小的工作任务,需要快速完成,易于修改和调试,使用Java显得很繁琐,需要进行类的设计,打成jar包,出现 ...

  9. python 读取文件夹下的图片进行处理

    python的os模块中有一个listdir函数可以遍历读取文件夹下的文件. import os for filename in os.listdir(r"./file"): #l ...

随机推荐

  1. 【学习】leader特别忙工作到晚上11点左右,组员7点左右下班了,作为leader怎么办?

    Ø  leader先将自己做的事情罗列出来,选出不属于leader当前职责的工作内容. Ø  将不属于leader职责内容的部分授权给组员(承担更多的责任,职责). Ø  授权时,先考察组员的能力和了 ...

  2. Ubuntu上用premake编译GDAL

    GDAL的编译脚本呈现出不同平台不同解决方案的百花齐放现状.我是从windows平台开始编译GDAL的,用的自然是nmake.那就是一种每个目录下都需要写makefile文件的构建方法,写的人麻烦,我 ...

  3. Hdu 5050 Divided Land

    题目要求就是做求两个二进制数的gcd,如果是用java的话,这题很简单.但也可以用C++做,只能先给自己留下这个坑了,还在研究c++的做法. import java.math.BigInteger; ...

  4. 【转】2014区域赛小结(牡丹江&&鞍山)by kuangbin

    Posted on 2014年10月20日 by kuangbin 最后的两场区域赛结束了! ICPC生涯的最后两场区域赛,选择了前两个赛区——牡丹江和鞍山,主要是时间比较靠前,而且我向来对东北赛区有 ...

  5. JNI_Java Native Interface

    一.简介 Java Native Interface(JNI),java与c/c++交互的接口,下面是一个简单是示例. javah 可以生成native方法对应的头文件,javap 可以查看方法或者属 ...

  6. 使用SharedPreferences即时存储之后,不能即时获取到数据

    在这里简介一下我所遇到的情况,由于情况非常特殊,所以我就来记录一下自己在这个方面的经历! 事由:在我所做的app中有一个视频的播放功能,因为之前做优化的时候.我听说对于视频这种比較耗费资源的应该给他独 ...

  7. AsyncQueryHandler处理数据

    参考:http://blog.csdn.net/hfreeman2011/article/details/8555474和http://blog.csdn.net/dragondog/article/ ...

  8. js window.onload事件

    1.最简单的调用方式 直接写到html的body标签里面,如: ? 1 2 3 4     <html>       <body onload="func()"& ...

  9. POJ 2187 旋转卡壳 + 水平序 Graham 扫描算法 + 运算符重载

    水平序 Graham 扫描算法: 计算二维凸包的时候可以用到,Graham 扫描算法有水平序和极角序两种. 极角序算法能一次确定整个凸包, 但是计算极角需要用到三角函数,速度较慢,精度较差,特殊情况较 ...

  10. NET Core全新的开发体验

    NET Core全新的开发体验 2016年6月27日,这是一个特殊的日子,微软全新的.NET开发平台.NET Core的RTM版本正式发布.我个人将.NET Core的核心特性归结为三点,它们的首字母 ...