1
from PIL import Image

im = Image.open(f)  #the size is 500x350
box = (0,0,100,100)
kay = im.crop(box)

これで問題ないようですね。

その最後の行はエラーになり、続行しませんが、AJAX であり、ATM をデバッグできないため、エラーが何であるかはわかりません。

4

3 に答える 3

4

切り抜きデータが ajax GET 経由で入ってくるためにコントローラーが文字列を処理している場合は、切り抜きを適用する前に文字列を整数にしてみる価値があるかもしれません。私の端末からの例...

Trinity:~ kelvin$ python
Python 2.5.2 (r252:60911, Feb 22 2008, 07:57:53) 
[GCC 4.0.1 (Apple Computer, Inc. build 5363)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from PIL import Image
>>> f = open("happy.jpg")
>>> im = Image.open(f)
>>> box = (0,0,100,100)
>>> kay = im.crop(box)
>>> kay
<PIL.Image._ImageCrop instance at 0xb1ea80>
>>> bad_box = ("0","0","100","100")
>>> nkay = im.crop(bad_box)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/PIL/Image.py", line 742, in crop
    return _ImageCrop(self, box)
  File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/PIL/Image.py", line 1657, in __init__
    self.size = x1-x0, y1-y0
TypeError: unsupported operand type(s) for -: 'str' and 'str'
>>> 
于 2009-09-27T13:02:59.407 に答える
1

AJAX get リクエストから座標を取得する場合、それらは文字列であるため、トリミングを成功させるには、それらを Int に解析する必要があります。

于 2009-09-27T14:27:47.510 に答える
0

文字列の代わりに整数座標を使用してみてください。

from PIL import Image

im = Image.open(f) #the size is 500x350 
box = (0,0,100,100) 
kay = im.crop(box)
于 2009-09-27T11:39:50.730 に答える