2013-06-29 5 views
7

이미지의 너비가 너비보다 클 때 항상 이미지를 왼쪽으로 90도 회전시키는 썸네일 필터가 있습니다. 캐시 된 이미지가 회전되는 동안 원본 이미지는 직선입니다.) 관련 코드는 다음과 같습니다.Django-imagekit에서 이미지의 자동 회전 멈춤 Thumbnail

profile_image = models.ImageField(upload_to='profile_images', default='profile_images/icon.png') 
profile_icon = ImageSpecField(source='profile_image', 
           processors=[processors.Thumbnail(width=72, height=72, crop=True)], 
           format='JPEG', 
           options={'quality': 60}) 

자동 회전을 어떻게 중지합니까?

답변

2

좋아, 장고와 함께 업로드되는 이미지에 문제가있는 것으로 나타났습니다. iPhone에서 찍은 사진은 브라우저가 사진의 자연스러운 방향을 옆으로 있다고 생각하게하는 전화 방향 메타 데이터를 가질 수 있습니다. 그러나 미리보기에서 해당 사진을 열고 왼쪽으로 회전 한 다음 다시 정상으로 되돌리고 다시 저장하면 문제가 없습니다.

Feed image shows rotated in certain browsers

서프라이즈!

7

다행이라고 생각했지만 ImageKit이 도움을 줄 수 있습니다. 조바꿈 프로세서 (imagekit.processors.Transpose)를 확인하십시오. 기본적으로 이미지의 메타 데이터를 사용하고 그 양만큼 회전합니다. 후속 프로세서가 이미지의 메타 데이터를 제거 할 때이 프로세서를 먼저 나열해야합니다. matthewwithanm의 도움이 포인터에 자세히 설명하려면

+0

[imagekit documentation] (https://django-imagekit.readthedocs.io/ko/latest/) – brennan

3

는 영업 이익의 코드는 다음과 같이 불통 될 것이다 :

profile_image = models.ImageField(upload_to='profile_images', default='profile_images/icon.png') 
profile_icon = ImageSpecField(source='profile_image', 
           processors=[ 
            processors.Transpose(), 
            processors.Thumbnail(width=72, height=72, crop=True) 
           ], 
           format='JPEG', 
           options={'quality': 60}) 

즉, 인수가없는 processors.Transpose()에 전화를 추가 할 수 있습니다.

Flickr에서 다운로드 한 원래의 세로 형식 이미지에서이 문제가 발생했습니다. 그 이미지 (아이폰에서 찍은)는 초상화 형식이며, 기본적으로 imagekit은 반 시계 방향으로 90도 회전합니다.