2013-06-29 46 views
7

Tôi đã có bộ lọc hình thu nhỏ luôn xoay hình ảnh 90 độ sang trái khi hình ảnh cao hơn chiều rộng (tôi đã kiểm tra và hình ảnh gốc là thẳng, trong khi hình ảnh được lưu trong bộ nhớ cache được xoay). Mã có liên quan trông giống như sau:Dừng tự động xoay hình ảnh trong hình ảnh Django-imagekit Hình thu nhỏ

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}) 

Làm cách nào để dừng tự động xoay?

Trả lời

2

Được rồi, hóa ra đó là vấn đề với hình ảnh được tải lên, không phải bất kỳ thứ gì với Django. Ảnh được chụp trên iPhone có thể có siêu dữ liệu định hướng điện thoại khiến cho trình duyệt nghĩ rằng định hướng tự nhiên của ảnh nằm ngang. Nhưng, nếu tôi mở ảnh đó trong Xem trước, xoay nó sang trái và sau đó trở lại bình thường, rồi lưu lại, không có vấn đề gì.

Feed image shows rotated in certain browsers

Bất ngờ!

7

Rất vui vì bạn đã tìm ra điều này, nhưng ImageKit có thể giúp bạn thực hiện một số thao tác. Kiểm tra bộ xử lý Transpose (imagekit.processors.Transpose). Theo mặc định, nó sẽ sử dụng siêu dữ liệu trong hình ảnh và xoay theo số tiền đó! Chỉ cần chắc chắn liệt kê bộ xử lý này trước tiên vì bộ xử lý tiếp theo sẽ tách siêu dữ liệu khỏi hình ảnh.

+0

[tài liệu hình ảnh] (https://django-imagekit.readthedocs.io/en/latest/) – brennan

3

Để xây dựng trên con trỏ hữu ích matthewwithanm của, mã của OP sẽ được tinh chỉnh để trông như thế này:

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}) 

tức là, thêm một cuộc gọi đến processors.Transpose() không có đối số.

Tôi gặp vấn đề này với hình ảnh định dạng chân dung gốc được tải xuống từ Flickr. Hình ảnh đó (được chụp trên iPhone) ở định dạng dọc và theo định dạng hình ảnh mặc định quay, trong trường hợp cụ thể này, 90 độ ngược chiều kim đồng hồ.

Các vấn đề liên quan