2015-05-08 18 views
5

Kullanıcının dikey veya yatay yönlendirmeli fotoğraf yükleyebilmesini istediğim bir fotoğraf web sitesinde çalışıyorum. Maksimum genişlik 1250 piksel olmalıdır, ancak dikey modundaysa maksimum yükseklik 1667 pikseldir. Fotoğrafları dikey yönde yüklediğimde, sola 90 derece döndürülüyorlar. Fotoğrafın doğru yönde kaldığından emin olmak için Yastık kullanmanın bir yolu var mı?Django, yükledikten sonra iphone resmi döner

class Result(models.Model): 
    result01  = models.FileField(upload_to=get_upload_file_name, null=True, blank=True) 
    result01thumb = models.FileField(upload_to=get_upload_file_name, null=True, blank=True) 

    def save(self): 
     super(Result, self).save() 
     if self.result01: 
      size = 1667, 1250 
      image = Image.open(self.result01) 
      image.thumbnail(size, Image.ANTIALIAS) 
      fh = storage.open(self.result01.name, "w") 
      format = 'png' 
      image.save(fh, format) 
      fh.close() 

Kullanıcıların mobil yaparken doğru yönelim gerçekten önemlidir bu yüzden, onların telefonlarından fotoğraf yüklemek mümkün önemlidir:

Bu benim kodudur. Burada yapabileceğim bir şey var mı?

+0

Olası yinelenen (http://stackoverflow.com/questions/12133612/using-pil-to-auto-rotate-picture-taken- ile hücre-telefon-ve-accelorometer) – Jerzyk

cevap

1

Yastık kullanarak bir resmi yeniden boyutlandırmak ve otomatik olarak döndürmek (exif bilgilerine göre) için böyle bir şey deneyebilirsiniz. [Cep telefonu ve accelorometer ile çekilen oto döndürme resme PIL kullanarak] arasında

def image_resize_and_autorotate(infile, outfile): 
    with Image.open(infile) as image: 
     file_format = image.format 
     exif = image._getexif() 

     image.thumbnail((1667, 1250), resample=Image.ANTIALIAS) 

     # if image has exif data about orientation, let's rotate it 
     orientation_key = 274 # cf ExifTags 
     if exif and orientation_key in exif: 
      orientation = exif[orientation_key] 

      rotate_values = { 
       3: Image.ROTATE_180, 
       6: Image.ROTATE_270, 
       8: Image.ROTATE_90 
      } 

      if orientation in rotate_values: 
       image = image.transpose(rotate_values[orientation]) 

     image.save(outfile, file_format) 
İlgili konular