在开发中,有时会遇到对图片的处理需求,在 Python中, PIL/Pillow 库非常强大和易用。

image
image

读取、新建图片

读取

os.Open()
unknown format
Decodeimage.Image

image 库中很多结构都实现了该接口,对于一些标准库中没有实现的功能,我们也可以自己实现该接口去满足。

新建

image.NewRGBA()
NewRGBAimage.Imageimage.RGBA

保存图片

保存图片和保存文件也类似,需要先将图片编码,然后以数据流的形式写入文件。

裁剪图片

SubImage()

该方法将从创建的300 * 300的图片裁剪出20 * 20 像素的子图片。

绘制图片

draw.Drawdraw.DrawMask

Draw

Draw
  • dst 绘图的背景图
  • r 背景图的绘图区域
  • src 要绘制的图
  • sp src 对应的绘图开始点
  • op 组合方式

以下代码是将一个 Gopher 的图案绘制到了一张黑色背景空白图的左上角。


DrawMask

DrawMaskmaskmp
DrawDrawMaskDrawMaskmaskDraw
DrawMask

下面是给图片加一个圆形遮罩的示例:



给图片加一个圆角遮罩的示例:




在图案进行圆形、圆角绘制的过程中,因为最小单位是1px,所以可能会有锯齿边缘的问题,解决这个问题可以通过先将原图放大,遮罩后再缩小来解决。

Reference