2015-07-14 44 views
6

'u kullanarak dosyaya diski kaydetmeden PNG'den JPG'ye dönüştürme Programımdadosyasını .jpg dosyasına dönüştürmem gerekiyor ancak dosyayı diske kaydetmek istemiyorum. Şu andapython: PIL

>>> from PIL import Imag 
>>> ima=Image.open("img.png") 
>>> ima.save("ima.jpg") 

kullanmak Ama bu diske kaydeder. Ben diske kaydetmek istiyor ama bir nesne olarak .jpg dönüştürülür zorunda kalmazsınız. Nasıl yapabilirim?

+0

sonradan onunla yapmak istiyorsun? Örneğin, isterseniz, bir StringIO nesnesine kaydetmek istediğinizi tahmin ediyorum. Bir HTML yanıtının bir parçası olarak iade, ama daha iyi ben sadece oreder içinde .jpg' nesne bazı scipy işlemleri yapmak 'o kullanmak gerekir sizin kullanım örneğini – Foon

+0

anlatırsanız size daha yararlı cevaplar alabilirsin. – Vivek

+0

Ve sadece, http://prancer.physics.louisville.edu/astrowiki/index.php/Image_processing_with_Python_and_SciPy başına kontrol etmek, "scipy PIL kullanmadan, doğrudan jpg ve png görüntüleri okuyabilir. Scipy görüntüleri numpy dizilerde saklanır ile, ve görselleştirme dışındaki kullanımlarda biz ". verilere doğrudan erişim var, bu yüzden ziyade PIL kullanmak yerine, sadece yapmak image_data = imread ('test.jpg'). astype (np.float32) ve yapılacak scipy operasyonları mümkün olmalıdır Bununla birlikte, özellikle jpeg başlıklarıyla bir şey yapmıyorsanız? – Foon

cevap

6

Sen io dan BytesIO kullanarak çalışıyoruz ne yapabilirim:

from io import BytesIO 

def convertToJpeg(im): 
    with BytesIO() as f: 
     im.save(f, format='JPEG') 
     return f.getvalue() 
1

artırma cevabı Ivaylo tarafından:

from PIL import Image 
from io import BytesIO 

ima=Image.open("img.png") 

with BytesIO() as f: 
    ima.save(f, format='JPEG') 
    f.seek(0) 
    ima_jpg = Image.open(f) 

Bu şekilde, ima_jpg bir Resim nesnedir.