raise ValueError('image width cannot be zero') ValueError: image width cannot be zero

raise ValueError('image width cannot be zero') ValueError: image width cannot be zero

当我尝试裁剪图像时出现以下错误。这是我的代码。 我不明白这个错误,因为我的图像在 png 格式下状态良好。怎么了?

from __future__ import print_function
    from wand.image import Image
    f = 'image1.png'
    with Image(filename=f) as img:
        print('width =', img.width)
        print('height =', img.height)
        #left,top,right,bottom
        x=img.crop(275, 347, 147, 239)
        x.size
        print(x.size)

我遇到了这个错误

    x=img.crop(275, 347, 147, 239)
  File "/usr/local/lib/python2.7/dist-packages/wand/image.py", line 543, in wrapped
    result = function(self, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/wand/image.py", line 1504, in crop
    raise ValueError('image width cannot be zero')
ValueError: image width cannot be zero

Image.crop() 依次进行左、上、右、下偏移。正如文档中的图表所示,右侧和底部的偏移量来自左侧和顶部,不是右侧和底部:

+--------------------------------------------------+
|              ^                         ^         |
|              |                         |         |
|             top                        |         |
|              |                         |         |
|              v                         |         |
| <-- left --> +-------------------+  bottom       |
|              |             ^     |     |         |
|              | <-- width --|---> |     |         |
|              |           height  |     |         |
|              |             |     |     |         |
|              |             v     |     |         |
|              +-------------------+     v         |
| <--------------- right ---------->               |
+--------------------------------------------------+

在你的代码中 img.crop(275, 347, 147, 239),147 在 275 的左边,239 在 347 的上面,这就是 ValueError 被引发的原因。