Python, PIL, проблема обрезки - PullRequest
0 голосов
/ 08 марта 2009

Не получается, что кадрирование работает правильно, проблема в том, что он кадрирует область правильных размеров, но всегда из верхнего левого угла (0, 0), а не из моих переданных координат.

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

В image.py из PIL, метод _ImageCrop, который я распечатал ..:

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

Значения кажутся правильными.

Вводится изображение JPEG размером 1600x2390.

Python версия: 2.5, Версия PIL: 1.1.6

Есть предложения? Спасибо

Ответы [ 2 ]

1 голос
/ 08 марта 2009

Работает для меня: Python 2.6.1, PIL 1.1.6, JPEG размером 2020x1338 пикселей.

Вы уверены, что имеете в виду JPEG с разрешением 1600x2390, а не 2390x1600? Размеры блока (1000 400 200 000) не соответствуют размеру изображения шириной 1600; если я попробую это, я получу данные мусора за пределами пересекающейся области.

0 голосов
/ 20 апреля 2010

Я делаю следующее:

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)
...