2012-08-26 10 views
7

के साथ ली गई ऑटो घुमाने वाली तस्वीर को पीआईएल का उपयोग करके मैं एक वेब ऐप में Django + PIL + अमेज़ॅन बोटो का उपयोग कर रहा हूं। उपयोगकर्ता तस्वीर में भेजता है और वेबपैप इसे प्रदर्शित करता है। ज्यादातर, लोग अपने सेल फोन से ली गई तस्वीर में भेजते हैं। कभी-कभी, छवि गलत अभिविन्यास में प्रदर्शित होती है। छवि से मेटा जानकारी प्राप्त करने के लिए पीआईएल या डीजेगो की इमेजफिल्ड का उपयोग करने और छवि को सही अभिविन्यास पर घुमाने के लिए इसका उपयोग करने का कोई तरीका है?सेल फोन और एक्सेलोरोमीटर

+1

का उपयोग कर उसके बारे में यहां धागा है कि हो सकता है आप मदद कर सकते हैं: http: //stackoverflow.com/questions/1606587/how-to-use-pil- टू-रीसाइज-एंड-लागू-रोटेशन-एक्सिफ-सूचना-टू-द-फाइल – Jingo

+0

यह आपकी मदद कर सकता है http://stackoverflow.com/questions/4228530/pil- थंबनेल-is-rotating-my-image – Rakesh

उत्तर

3

EXIF ​​जानकारी प्राप्त करने के लिए इसे आज़माएं। एनबी .: _getexif() विधि जेपीईजी प्लगइन से संबंधित है। यह अन्य प्रकार की छवियों में मौजूद नहीं होगा।

import Image 
from PIL.ExifTags import TAGS 

im = Image.open('a-jpeg-file.jpg') 
exifdict = im._getexif() 
if len(exifdict): 
    for k in exifdict.keys(): 
     if k in TAGS.keys(): 
      print TAGS[k], exifdict[k] 
     else: 
      print k, exifdict[k] 

एक यादृच्छिक छवि मैं अपने हार्डडिस्क पर पाया के लिए, यह उत्पादन किया:

ExifVersion 0221 
ComponentsConfiguration 
ApertureValue (4312, 1707) 
DateTimeOriginal 2012:07:19 17:33:37 
DateTimeDigitized 2012:07:19 17:33:37 
41989 35 
FlashPixVersion 0100 
MeteringMode 5 
Flash 32 
FocalLength (107, 25) 
41986 0 
Make Apple 
Model iPad 
Orientation 1 
YCbCrPositioning 1 
SubjectLocation (1295, 967, 699, 696) 
SensingMethod 2 
XResolution (72, 1) 
YResolution (72, 1) 
ExposureTime (1, 60) 
ExposureProgram 2 
ColorSpace 1 
41990 0 
ISOSpeedRatings 80 
ResolutionUnit 2 
41987 0 
FNumber (12, 5) 
Software 5.1.1 
DateTime 2012:07:19 17:33:37 
41994 0 
ExifImageWidth 2592 
ExifImageHeight 1936 
ExifOffset 188 

यह Orientation मूल्य जो आप चाहते है। इसका अर्थ पाया जा सकता है उदा। exif orientation page पर।

कच्चे एक्सिफ़ डेटा Image.info['exif'] से एक स्ट्रिंग के रूप में उपलब्ध है। रोटेशन rotate() विधि के साथ पूरा किया जा सकता है।

मुझे कच्चे डेटा को बदलने के अलावा पीआईएल का उपयोग करके EXIF ​​डेटा बदलने की विधि से अवगत नहीं है।

3

मैं छवियों के प्रसंस्करण के लिए django-imagekit उपयोग कर रहा हूँ तो imagekit.processors.Transpose

from imagekit.models import ImageSpecField 
from imagekit.processors import ResizeToFill, Transpose, SmartResize 

class UserProfile(models.Model): 
    avatar = models.ImageField(upload_to='upload/avatars', max_length=255, blank=True, null=True) 
    avatar_thumbnail = ImageSpecField(
    source='avatar', 
    processors = [Transpose(),SmartResize(200, 200)], 
    format = 'JPEG', 
    options = {'quality': 75} 
) 
संबंधित मुद्दे