Django

2011-09-23 5 views
5

में अपलोड किए गए फ़ाइल को पीआईएल छवि में कनवर्ट करना मैं इसे सहेजने से पहले छवि के आयाम की जांच करने की कोशिश कर रहा हूं। मुझे इसे बदलने की जरूरत नहीं है, बस सुनिश्चित करें कि यह मेरी सीमाओं को फिट करे।Django

अभी, मैं फ़ाइल को पढ़ सकता हूं, और किसी समस्या के बिना इसे एडब्ल्यूएस में सहेज सकता हूं।

output['pic file'] = request.POST['picture_file'] 
conn = myproject.S3.AWSAuthConnection(aws_key_id, aws_key) 
filedata = request.FILES['picture'].read() 
content_type = 'image/png' 
conn.put(
     bucket_name, 
     request.POST['picture_file'], 
     myproject.S3.S3Object(filedata), 
     {'x-amz-acl': 'public-read', 'Content-Type': content_type}, 
     ) 

मुझे बीच में एक कदम डालना होगा, यह सुनिश्चित करता है कि फ़ाइल का सही आकार/चौड़ाई आयाम हो। मेरी फ़ाइल एक फॉर्म से नहीं आ रही है जो ImageField का उपयोग करती है, और मैंने जो भी समाधान देखा है, उसका उपयोग करता है।

वहाँ

img = Image.open(filedata) 

उत्तर

1

मैंने पहले यह कर दिया है लेकिन मैं अपने पुराने टुकड़ा नहीं मिल सकता है की तरह कुछ करने के लिए एक तरह से हम अपने सिर के ऊपर से जाना है ... इसलिए यहाँ

picture = request.FILES.get['picture'] 
img = Image.open(picture) 
#check sizes .... probably using img.size and then resize 

#resave if necessary 
imgstr = StringIO() 
img.save(imgstr, 'PNG') 
imgstr.reset() 

filedata = imgstr.read() 
+0

स्ट्रिंगियो ऑब्जेक्ट वह है जो मैं अपनी छवि को अस्थायी रूप से स्मृति में संग्रहीत करने के लिए खो रहा था। धन्यवाद! – Mashakal

3
image = Image.open(file) 
#To get the image size, in pixels.  
(width,height) = image.size() 
#check for dimensions width and height and resize 
image = image.resize((width_new,height_new)) 
+0

(चौड़ाई, ऊंचाई) = image.size आकार नहीं() –

1

कोड bellow अनुरोध से छवि बनाता है, आप चाहते हैं:

from PIL import ImageFile 
def image_upload(request): 
    for f in request.FILES.values(): 
     p = ImageFile.Parser() 
     while 1: 
      s = f.read(1024) 
      if not s: 
       break 
      p.feed(s) 
     im = p.close() 
     im.save("/tmp/" + f.name)