Python,PIL,裁剪问题

时间:2009-03-08 00:07:04

标签: python python-imaging-library crop

似乎无法让裁剪正常工作,问题是,它会裁剪一个尺寸正确的区域,但总是从左上角(0,0),而不是从我传递的坐标。

image = Image.open(input)
region = image.crop((1000,400,2000,600)
region.save(output)

在PIL的image.py中,方法_ImageCrop我打印出来了......:

print x0, y0, x1, y1
self.__crop = x0, y0, x1, y1

值似乎是正确的。

输入是尺寸为1600x2390的JPEG图像。

Python版本:2.5, PIL版本:1.1.6

有什么建议吗?感谢

2 个答案:

答案 0 :(得分:1)

适用于我:Python 2.6.1,PIL 1.1.6,JPEG大小为2020x1338像素。

你确定你的意思是1600x2390而不是2390x1600吗? (1000,400,2000,600)箱尺寸超出1600幅图像的尺寸;如果我试试这个,我会在交叉区域外得到垃圾数据。

答案 1 :(得分:0)

我接下来会这样做:

cover=Image.open(path_to_cover+"/shablon1.jpg")

...

def generit_nomer_proekt(self,nomer):
    size_box=(160,40)
    font=ImageFont.truetype('/home/vintello/workspace/mpg_to_dvd/src/cover/ttf/aricyr.ttf',int(30))
    im = Image.new ( "RGB", size_box , "white" )
    draw = ImageDraw.Draw ( im )
    draw.text ( (20,0), unicode(nomer,"utf-8"), fill="#74716f", font=font )
    return im

.....

nazv_vert=self.generit_nomer_proekt(nomer)
coo=nazv_vert.size
left_x=1575
left_y=383
box_vert_nazv=(left_x,left_y,left_x+coo[0],left_y+coo[1])
cover.paste(nazv_vert,box_vert_nazv)

或者如果你不像以前那样使用PNG:

cover.paste(nazv_vert,box_vert_nazv,nazv_vert)