2009-05-06 176 views
4

我有一個PIL的裁剪功能可能非常基本的問題:裁剪圖像的顏色是完全擰緊的。下面的代碼:Python的PIL裁剪問題:裁剪圖像的顏色扭曲

>>> from PIL import Image 
>>> img = Image.open('football.jpg') 
>>> img 
<PIL.JpegImagePlugin.JpegImageFile instance at 0x00 
>>> img.format 
'JPEG' 
>>> img.mode 
'RGB' 
>>> box = (120,190,400,415) 
>>> area = img.crop(box) 
>>> area 
<PIL.Image._ImageCrop instance at 0x00D56328> 
>>> area.format 
>>> area.mode 
'RGB' 
>>> output = open('cropped_football.jpg', 'w') 
>>> area.save(output) 
>>> output.close() 

原始圖像:enter image description here

and the output

正如你所看到的,輸出的顏色是完全搞砸了......

在此先感謝您的幫助!

-Hoff

回答

4

output應該是一個文件名,而不是處理程序。

+1

那麼,它可以是一個文件,但它需要在二進制模式被打開。儘管如此,最好讓PIL在方便時處理。 – kindall 2011-07-26 16:29:31

3

代替

output = open('cropped_football.jpg', 'w') 
area.save(output) 
output.close() 

只是做

area.save('cropped_football.jpg') 
1

由於調用save實際產生的輸出,我不得不假定PIL能夠使用一個文件名或一個打開的文件互換。問題出在文件模式下,默認情況下會嘗試根據文本慣例進行轉換 - 在Windows上'\ r \ n'將替換'\ n'。您需要以二進制模式打開文件:

output = open('cropped_football.jpg', 'wb') 

P.S.我測試了這一點,它的工作原理:

enter image description here