Как узнать, почему использование функций PIL приводит к ошибке памяти?

Я использую PIL (библиотека изображений python) для некоторых манипуляций с изображениями, в частности, я сшиваю изображения вместе.

Мой код работает нормально для некоторых изображений в небольших количествах, но иногда я получаю MemoryError .

Что особенно странно для меня, так это то, что я не делаю манипуляций с битовыми изображениями, все они работают с <10 ​​изображениями размером менее 10 КБ.

Я часто звоню на Image.resize , но меня удивляет, что это вызывает серьезные проблемы.

Вот дорожка стека:

Traceback (most recent call last):                                                                                                                                               
  File "test.py", line 15, in <module>                                                                                                                                           
    pprint(scale_matrix_down((90,90), [inpt]))                                                                                                                                   
  File "/Users/jeremykarmel/Desktop/Python/merger.py", line 105, in scale_matrix_down                                                                                            
    return [shrinkRow(row, row_width_overflow(row)) for row in matrix]                                                                                                           
  File "/Users/jeremykarmel/Desktop/Python/merger.py", line 103, in shrinkRow                                                                                                    
    rest         = [shrinkIm(im, pixels_per_im) for im in row[remaining_pixels:]]                                                                                                
  File "/Users/jeremykarmel/Desktop/Python/merger.py", line 110, in shrinkIm                                                                                                     
    return im.resize((im.size[0] - num_pix, im.size[1] - num_pix))                                                                                                               
  File "/Library/Python/2.7/site-packages/PIL/Image.py", line 1302, in resize                                                                                                    
    im = self.im.resize(size, resample)                                                                                                                                          
MemoryError

Имейте в виду, что все изображения имеют размер менее 90x90 пикселей.

Я зашел в тупик и действительно не знаю, что делать дальше. Что я могу сделать, чтобы освободить память? Должен ли я звонить оператору del или я могу сделать что-нибудь попроще? Заранее благодарим за помощь!

12
задан Dan D. 14 October 2011 в 02:12
поделиться