首页 > 学院 > 开发设计 > 正文

Image模块

2019-11-06 06:24:57
字体:
来源:转载
供稿:网友

创建一个新的图片

Image.new(mode, size)Image.new(mode, size, color)

打开一张图片

img = Image.open("1.jpg")

层叠图片

层叠两个图片,img2和img2,alpha是一个介于[0,1]的浮点数,如果为0,效果为img1,如果为1.0,效果为img2。当然img1和img2的尺寸和模式必须相同。这个函数可以做出很漂亮的效果来,而图形的算术加减后边会说到。

Image.blend(img1, img2, alpha)

点操作

img.point(function)

这个function接受一个参数,且对图片中的每一个点执行这个函数,这个函数是一个匿名函数,在python之类的函数式编程语言中,可以使用lambda表达式来完成,如

out = img.point(lamda i: i*1.2) # 对每个点进行20%的加强

图片转换(扭曲,映射)

transform(size, method, data)

method参数:

EXTENT 剪一个矩形出来(用以剪切,拉伸,压缩等操作) AFFINE 几何防射转换 QUAD 将一个四边形映射到一个矩形 MESH 将多个四边形映射到一个操作

在EXTENT参数的情况下,data是一个四元组(x0,y0,x1,y1),表示输入图片中需要处理的区域,size为新图片的尺寸,是一个二元组(width, height) 用途:剪贴,拉伸,压缩等操作

在AFFINE参数的情况下,data是一个六元组(a,b,c, d,e,f),其中包含affine转置矩阵的前两行。对于输出图片的每个像素(x,y),会被新值(ax+by+c, dx+ey+f)替换。 用途:反转,旋转,剪切等

在QUAD参数的情况下,data是一个八元组(x0,y0,x1,y1,x2,y2,x3,y3)表示源四边形的四个定点的坐标值.MESH方式跟QUAD的效果相当,不过是对多个四边形进行映射操作.

图片旋转

img.transpose(method)

FLip_LEFT_RIGHT 左右倒置 FLIP_TOP_BOTTOM 上下倒置 ROTATE_90 旋转90度(逆时针) ROTATE_180 旋转180度(逆时针) ROTATE_270 旋转270度(逆时针)

显示

img.show()

保存

img.save("101.jpg", "JPEG")

旋转任意角度

img.rotate(45)

切片

img.crop(box)

返回当前图像的一个矩形区域。box参数是一个定义了左,上,右,下像素坐标的4元元组。

复制

img.copy()

缩略图

img.thumbnail(size)

格式转换

img.convert("RGBA")

获得某个像素点的颜色

img.getpixel((x, y))

(x, y)为像素在图片上的位置

设置某个像素点的颜色

img.setpixel((x, y))

获得图片所有像素点的颜色

img.getdata()

可以用list(img.getdata())显示出来

获得图片每种颜色的像素点数目

img.histogram()

把图片转化成矩阵

img = Image.open('93.png')input_img = list(img.getdata())input_img = np.reshape(input_img, (img.size[1], img.size[0]))

把矩阵转化成图片(L)

new_img = Image.fromarray(output_img.astype(np.uint8))# output_img是一个矩阵new_img.save('smooth_filter'+str(l)+'.png')
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表