把一张图片裁剪得左右空白部分对称,图片背景为白色。这件事情说来也简单,读取图片的像素,分别检测左右空白部分的宽度,然后裁剪到一样即可 。
接下来就涉及到读取图片像素的问题了,发现了一个好用的工具get-pixels,可以读取图片像素并返回数组。
安装
- 1
- 1
目前支持PNG, JPEG和GIF三种格式的图片。
用法
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
如上是读取数据的过程,返回值pixels是一个ndarray对象。如下是一个JPG图片的输出示例:
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
其中data是一维数组,描述颜色的RGBA值,shape表示数组维度和各个维度的大小, 该图片长宽分别为560和508,第三个维度表示RGBA值。stride是数组各个维度的步长,offset表示起始值。
可以通过下面的函数遍历ndarray:
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
值得注意的是,对于JPG和PNG图片,返回的是三维数组[width, height, channels]。但对于GIF,则是一个四维数组[numFrames, width, height, 4]。
这样,就可以采集图片的像素进行处理,配合gm工具,可以对图片进行一些操作了。