操作图像4-pillow-旋转,翻转图像、更改单个元素
2016-11-26 02:20
441 查看
1旋转、翻转图像
图像可以用rotate()方法旋转,该方法返回旋转后的新Image对象,并保持原始Image对象不变。rotate()的参数是一个整数或浮点数,表示图像逆时针旋转的度数。
from PIL import Image '''打开图像''' catCopyIm = Image.open(r'D:\image\image.jpg') '''逆时针旋转90度的新Image图像''' catCopyIm.rotate(90).save('rotate90.png') '''逆时针旋转180度的新Image图像''' catCopyIm.rotate(180).save('rotate180.png') '''逆时针旋转270度的新Image图像''' catCopyIm.rotate(270).save('rotate270.png')
注意,当图像旋转90或270度时,宽度和高度会变化。如果旋转其他角度,图像 的原始尺寸会保持; windows上,
使用黑色的背景来填补旋转造成的缝隙
rotate()方法有一个可选的expand关键字参数,如果设为True,就会放大图像的尺寸,以适应整个旋转后的新图像
'''旋转6度''' catCopyIm.rotate(6).save('roteat6.png') '''expand设置为True''' catCopyIm.rotate(6, expand=True).save('roteat6_expand.png')
transpose()方法,得到图像的”镜像翻转” 必须传入Image.FLIP_LEFT_RIGHT
或Image.FLIP_TOP_BOTTOM。
'''水平翻转''' catCopyIm.transpose(Image.FLIP_LEFT_RIGHT).save('horizontal_flip.png') '''垂直翻转''' catCopyIm.transpose(Image.FLIP_TOP_BOTTOM).save('vertrical_flip.png')
以上demo:
from PIL import Image '''打开图像''' catCopyIm = Image.open(r'D:\image\image.jpg') '''逆时针旋转90度的新Image图像''' catCopyIm.rotate(90).save('rotate90.png') '''逆时针旋转180度的新Image图像''' catCopyIm.rotate(180).save('rotate180.png') '''逆时针旋转270度的新Image图像''' catCopyIm.rotate(270).save('rotate270.png')
'''旋转6度''' catCopyIm.rotate(6).save('roteat6.png') '''expand设置为True''' catCopyIm.rotate(6, expand=True).save('roteat6_expand.png')
'''水平翻转''' catCopyIm.transpose(Image.FLIP_LEFT_RIGHT).save('horizontal_flip.png') '''垂直翻转''' catCopyIm.transpose(Image.FLIP_TOP_BOTTOM).save('vertrical_flip.png')
2 更改单个像素
单个像素的颜色可以通过getpixe()和putpixel()方法取得和设置。它们都接受一个元组,表示像素的X和Y坐标。putpixel()方法还接受一个元组
作为该像素的颜色,这个颜色参数是四个整数RGBA元组或三整数RGB元组。
from PIL import Image from PIL import ImageColor '''200×200的透明正方形''' im = Image.new('RGBA', (200, 200)) '''坐标调用''' print(im.getpixel((0, 0))) '''遍历上半部份的所有像素''' for x in range(200): for y in range(100): '''设置每个像素的颜色''' im.putpixel((x, y), (255,255,255)) for x in range(200): for y in range(100,200): '''假定不知道RGB元组,必须使用ImageColor.getcolor()''' im.putpixel((x, y), ImageColor.getcolor('darkgray', 'RGBA')) print(im.getpixel((0, 0))) '''调用坐标''' print(im.getpixel((0,100))) '''保存图像''' im.save('putpixel.png')
相关文章推荐
- LeetCode-Rotate Image-图像旋转-矩阵元素操作
- Java中Image的水平翻转、缩放与自由旋转操作
- c#图像旋转和翻转
- opencv 图像翻转、旋转
- php图像处理函数大全(缩放、剪裁、缩放、翻转、旋转、透明、锐化的实例总结)
- 一张图像表示成NxN的矩阵,图像中每个像素是4个字节,写一个函数把图像旋转90度。 你能原地进行操作吗?(即不开辟额外的存储空间)
- 图像编程的若干常用操作(旋转,透明等)
- bmp图片文件的操作 旋转、翻转、放大缩小
- Qt可显示基本的图像类型,利用QImage、QPxmap类可以实现图像的显示,并且利用类中的方法可以实现图像的基本操作(缩放、旋转)。
- OpenCV图像操作,缩放,旋转等
- iOS 使用手势UIGestureRecognizer对图像进行缩放、移动、旋转等操作
- bmp图片文件的操作 旋转、翻转、放大缩小
- 伸展树的学习(六):伸展树的区间操作(区间翻转,旋转,增加一个数,求最小值)
- 我的OpenCV学习笔记(三):利用操作像素完成简单的图像处理:加入椒盐噪声、图像翻转、改变对比度、图像锐化
- WCF X.b 操作引用了已经从 Y.b 操作导出的消息元素 [http://tempuri.org/:b]。可以通过更改方法名称或使用 OperationContractAttribute 的 Name 属性更改其中一个操作的名称...
- Java中Image的水平翻转、缩放与自由旋转操作
- PKU-文件操作作业-BMP图像文件旋转
- UIGestureRecognizer对图像进行缩放、移动、旋转操作
- Pygame学习(3)-----如何对图像进行翻转,缩放,旋转
- iOS 使用手势UIGestureRecognizer对图像进行缩放、移动、旋转等操作