python, Image
PIL: Python Image Library, python平台的图像处理库,要使用Image首先要从PIL库导入Image:
from PIL import Image
如果没有安装PIL的包,导入会出错。所以要先安装包
PIL:Python Imaging Library(仅支持到python2.7)
Pillow:支持最新的Python 3.*
Python3.*的版本直接安装Pillow:pip install Pillow
Image是PIL下的一个类,具体的使用如下:
from PIL import Image
# 读取图片
im = Image.open(r''D:\kolor.jpg'')
#查看图片信息
im.format, im.size, im.mode
# 显示图片
im.show()
# 保存图片, 参数:保存的地址和名称,图片格式
im.save(r'D:\kolor.jpg', 'JPEG')
#创建新图片
im=Image.new(mode, size) # color的默认值是黑色
im=Image.new(mode, size, color)
如: im=Image.new('RGB', (450, 600), (255,255,255)) # 'RGB'是红(RED)绿(GREEN)蓝(BLUE)模式
#两张图片相加
Image.blend(im1, im2, alpha) # alpha是im1和im2的比例参数
#点操作
im.point(function) # function接收一个参数,并对图片的每个点执行这个函数
如:im.point(lambad i: i*1.5) #对每个点进行50%的加强
#图片裁剪
box=(100,100,500,500) # 设置要裁剪的区域
region=im.crop(box)
#图片黏贴
im.paste(im1, box) #把im1的box区域黏贴到im中去
#通道分离
r,g,b=im.split() #分割成三个通道,此时r,g,b分别是三个图像对象
#通道合并
im=Image.merge('RGB', (b,g,r)) #将b, r两个通道进行反转
#改变图片的大小
im.resize((128,128))
#缩小图片
im.thumbnail(())
im.thumbnail((w//2, h//2)) # 缩小50%
#旋转图像
im.rotate(45) #逆时针旋转45度
im.transpose(Image.ROTATE_180)
im.transpose(Image.FLIP_LEFT_RIGHT) #左右兑换
im.transpose(Image.FLIP_TOP_BOTTOM) #上下对换
#图像mode转换
im.convert('RGBA') #图像的mode转换成RGBA类型
#写某个像素位置的值
im.putpixel((4,4), (255,0,0))
#加滤镜
im.filter(ImageFilter.BLUE)
以下是Image对象的全部方法:
| save(f,format=None) | 保存 | 如果f是一个file对象,必须指定format(format codes) |
| convert(mode) | 转换mode | |
| copy() | ||
| crop(bbox) | 剪切 | 原图中bbox区域 |
| filter(name) | 滤镜 | the name of predefined image enhancement filters 滤镜名字需要import ImageFilter |
| getbands() | 通道的字符串序列 | 如RGB图返回('R', 'G', 'B') |
| getbbox() | 包含非零区域的最小bbox | |
| getextrema() | 最大最小像素点值 | min&max pixel value 单通道图:返回元组(min,max) 多通道图:返回各个通道的元组组成的元组 |
| getpixel(xy) | 取像素点值 | 坐标xy处的pixel value or a sequence of pixel values |
| histogram(mask=None) |
统计直方图 |
单通道图:返回列表[c0, c1, ...],ci是值为i的像素数 多通道图:a single sequence that is the concatenation of the sequences for all bands mask参数:a same-sized mask image of mode "1" or "L"(include only those pixels correspond to nonzero pixels in the mask argument) |
| offset(dx,dy=None) |
平移 |
Returns a new image the same size as the original, but with all pixels rotated dx in the +x direction,and dy in the +y direction. If dy is omitted, it defaults to the same value as dx. |
| paste(i2,where,mask=None) | 粘贴图片 | where参数可以是 1 (x,y)坐标对:i2的像素点(0,0)对齐原图中的(x,y)粘贴,i2超过原图边界的部分被抛弃 2 bbox:i2必须和该bounding box大小一致 3 None:i2必须和原图大小一致 如果i2的mode和原图不一致,粘贴前会被转换。 mask参数:a same-sized mask image of mode "1","L" or “RGBA ”(control which pixels get replaced) |
| paste(color,box=None,mask=None) | 填充颜色 | 如果box省略,整个图被填充为color色;mask参数同上 |
| point(function) | 改变像素点(函数) | Returns a new image with each pixel modified. |
| point(table) | 改变像素点(查表) | To translate pixels using a table(a sequence of 256n values, where n is the number of bands in the image) lookup |
| putalpha(band) |
改变alpha通道 |
The pixels of the band image(same-sized,"L" or "1") replace the alpha band(A) of the original image(RGBA) in place. |
| putpixel(xy, color) | 改变单个像素点颜色 | Note that this method is relatively slow. For more extensive changes, use paste or theImageDraw module instead. |
| resize(size,filter=None) | 调整大小 | |
| rotate(theta) |
旋转(围绕图片中心) |
Any pixels that are not covered by rotation of the original image are set to black. |
| show() |
显示图片 |
On Unix systems, this method runs the xv image viewer to display the image. |
| split() |
分离通道 |
返回各个通道的灰度图组成的元组 |
| thumbnail(size,filter=None) | 缩略图 | Modifies in-place,Preserves aspect ratio |
| transform(xs, ys, Image.EXTENT, (x0,y0,x1,y1)) |
Returns a transformed copy of the image. In the transformed image, the point originally at (x0,y0) will appear at (0,0), and point (x1,y1) will appear at (xs, ys). |
|
| transform(xs, ys, Image.AFFINE, (a,b,c,d,e,f)) | affine变换 |
The values a through f are the first two rows of an affine transform matrix. |
| transpose(method) | 翻转旋转 | ROTATE_90/180/270(clockwise), FLIP_TOP_BOTTOM(horizontal), FLIP_RIGHT_LEFT(vertical) |
python, Image的更多相关文章
- Python中的多进程与多线程(一)
一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...
- Python高手之路【六】python基础之字符串格式化
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- Python 小而美的函数
python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况 any any(iterable) ...
- JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议
软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...
- 可爱的豆子——使用Beans思想让Python代码更易维护
title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ...
- 使用Python保存屏幕截图(不使用PIL)
起因 在极客学院讲授<使用Python编写远程控制程序>的课程中,涉及到查看被控制电脑屏幕截图的功能. 如果使用PIL,这个需求只需要三行代码: from PIL import Image ...
- Python编码记录
字节流和字符串 当使用Python定义一个字符串时,实际会存储一个字节串: "abc"--[97][98][99] python2.x默认会把所有的字符串当做ASCII码来对待,但 ...
- Apache执行Python脚本
由于经常需要到服务器上执行些命令,有些命令懒得敲,就准备写点脚本直接浏览器调用就好了,比如这样: 因为线上有现成的Apache,就直接放它里面了,当然访问安全要设置,我似乎别的随笔里写了安全问题,这里 ...
- python开发编译器
引言 最近刚刚用python写完了一个解析protobuf文件的简单编译器,深感ply实现词法分析和语法分析的简洁方便.乘着余热未过,头脑清醒,记下一点总结和心得,方便各位pythoner参考使用. ...
- 关于解决python线上问题的几种有效技术
工作后好久没上博客园了,虽然不是很忙,但也没学生时代闲了.今天上博客园,发现好多的文章都是年终总结,想想是不是自己也应该总结下,不过现在还没想好,等想好了再写吧.今天写写自己在工作后用到的技术干货,争 ...
随机推荐
- 初学者易上手的SSH-struts2 03数据封装
这一章我们一样来获取数据,看看与上一章有什么不同吧.数据封装也有三种方式.下面我们来一一介绍. 第一种:属性封装. 类就用LoginAction吧.里面有两属性,name,pwd.给这两个属性写上ge ...
- grade配置添加java库导致报 java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMerger
原因是导入的第三方库中也引入了项目中存在的相同名称的库,导致产生冲突
- HSV色彩空间和颜色分量范围
部分来自: https://wenku.baidu.com/view/eb2d600dbb68a98271fefadc.html http://blog.csdn.net/Taily_Duan/art ...
- Lab 7-2
Analyze the malware found in the file Lab07-02.exe. Questions and Short Answers How does this progra ...
- 『Python』多进程处理
尝试学习python的多进程模组,对比多线程,大概的区别在: 1.多进程的处理速度更快 2.多进程的各个子进程之间交换数据很不方便 多进程调用方式 进程基本使用multicore() 进程池优化进程的 ...
- grpc(一)grpc-java之helloworld
1.参考资料 (1)grpc-java官网QuickStart: https://grpc.io/docs/quickstart/java.html (2)grpc-java的github: http ...
- js中用户名的正则(字符,数字,下划线,减号)
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Inse ...
- mysql数据库的基础操作
注 : 本文中注释因为方便写了# ,mysql中规范应为 -- 创建用户 通过root管理员权限可以创建各种用户,并为他们分配权限及可以操作的数据库. 语法:create user '用户名'@'ip ...
- firewall-cmd.man
FIREWALL-CMD(1) firewall-cmd FIREWALL-CMD(1) NAME firewall-cmd - firewalld command line client SYNOP ...
- [Leetcode 15]三数之和 3 Sum
[题目] Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? ...