2016-02-29 4 views
0

У меня есть код, который разбивает одно изображение на несколько суб-изображений, используя метод Pillow's crop. Мой код похож на следующее:Проблемы с повторным использованием метода урожая в Pillow (PILon PIL fork)

from PIL import Image 
from PIL import ImageTk 
import Tkinter  


# Open image from file path 
baseimg = Image.open("PathToLargeImage.tif") 

# Get image attributes 
height = baseimg.height 
width = baseimg.width 

# Create a list of sub-images 
subimages = [] 
for y in range(0, height, 50): 
    subimage = baseimg.crop((0, y, width, 10)) 
    subimage.load() # Call load on sub-image to detach it from baseimg 
    subimages.append(subimage) 
    showimage(subimage) 

Когда я делаю вызов для отображения SubImage первый SubImage будет отображаться правильно, то все следующие суб-изображения будут иметь нулевую высоту (открыто с отладкой с PyCharm) и отображаться неправильно.

ShowImage функция использует Tkinter и выглядит следующим образом:

def showimage(img): 
    # Build main window 
    root = Tkinter.Tk() 
    # Convert image 
    tkimage = ImageTk.PhotoImage(img) 
    # Add image on window 
    Tkinter.Label(root, image=tkimage).pack() 
    # Start gui loop 
    root.mainloop() 

ответ

0

Проблема заключается в этой строке:

subimage = baseimg.crop((0, y, width, 10)) 

Если вы обратитесь к документации для посева на http://effbot.org/imagingbook/image.htm#tag-Image.Image.crop вы увидите он не принимает ширину и высоту окна для обрезки, скорее, абсолютные координаты для него.

Таким образом, вы просто должны изменить вызов соответственно:

subimage = baseimg.crop((0, y, width, y + 10)) 

 Смежные вопросы

  • Нет связанных вопросов^_^