Tôi đang sử dụng Django + PIL + Amazon boto trong một ứng dụng web. Người dùng gửi trong ảnh và webapp hiển thị nó. Chủ yếu là, mọi người gửi ảnh chụp từ điện thoại di động của họ. Đôi khi, hình ảnh được hiển thị theo hướng sai. Có cách nào để sử dụng PIL hoặc Django ImageField để có được những thông tin meta từ hình ảnh và sử dụng nó để xoay hình ảnh với định hướng đúng?Sử dụng PIL để hình ảnh tự động xoay chụp bằng điện thoại di động và accelorometer
7
A
Trả lời
3
Hãy thử điều này để nhận được thông tin EXIF. N.B .: Cơ sở phương pháp _getexif()
thuộc về các plugin JPEG. Nó sẽ không tồn tại trong các loại hình ảnh khác.
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]
Đối với một hình ảnh ngẫu nhiên tôi tìm thấy trên ổ cứng của tôi, điều này tạo ra:
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
Nó là giá trị Orientation
mà bạn muốn. Có thể tìm thấy ý nghĩa của nó, ví dụ: trên số exif orientation page.
dữ liệu EXIF liệu có sẵn như là một chuỗi từ Image.info['exif']
. Rotation có thể được thực hiện với phương pháp rotate()
.
Tôi không biết phương pháp thay đổi dữ liệu EXIF bằng PIL, ngoài việc thay đổi dữ liệu thô.
3
Tôi đang sử dụng django-imagekit để xử lý hình ảnh sau đó sử dụng 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}
)
Các vấn đề liên quan
- 1. Đọc mã vạch bằng hình ảnh được chụp bằng camera điện thoại di động
- 2. Hình động và Điện thoại không hoạt động trên điện thoại di động
- 3. Màn hình hoạt động không xoay khi tôi xoay điện thoại di động
- 4. Cách đúng để sử dụng điện thoại di động và điện thoại di động với nhiều trang html
- 5. Mã hóa Sử dụng Điện thoại Di động
- 6. cảm biến điện thoại di động
- 7. Làm cách nào để tự động định lại kích thước hình ảnh cho trang web trên điện thoại di động?
- 8. sử dụng iscroll với điện thoại di động jquery
- 9. thoại di động trang web - lực lượng cảnh chỉ/không tự động xoay
- 10. Trong javascript 'Nếu điện thoại di động'
- 11. Chụp ảnh màn hình trên điện thoại Android khi phát video và xem trước máy ảnh
- 12. Hình ảnh nhúng trong email HTML không hiển thị trên điện thoại di động
- 13. Sự cố với trang web trên điện thoại di động
- 14. setTimeout không hoạt động trên điện thoại di động safari
- 15. window.scrollTo không hoạt động trong điện thoại di động
- 16. "background-size: cover" không bao gồm màn hình điện thoại di động
- 17. Ảnh chụp tự động xoay trong khi tải lên trong IOS 6.0 hoặc iPhone
- 18. Thống kê kích thước màn hình điện thoại di động và máy tính để bàn
- 19. Hiệu năng GetImageData()/PutImageData() trên điện thoại di động
- 20. Xoay điện thoại khởi động lại video trên android
- 21. Cách làm mới hoặc đặt lại ứng dụng trong điện thoại di động + jquery di động?
- 22. Gỡ lỗi trong trình duyệt trên điện thoại di động?
- 23. Làm cách nào để đặt báo thức khi điện thoại di động không sử dụng Android?
- 24. Tôi muốn hiển thị hộp cảnh báo tự nhiên cho iphone bằng cách sử dụng điện thoại di động jquery
- 25. jquery tùy chỉnh điện thoại di động css?
- 26. jquery splash screen điện thoại di động với javascript
- 27. asp.net mvc, jquery điện thoại di động, thực hành tốt nhất về kiến trúc điện thoại
- 28. có thanh trượt jquery ui cho điện thoại di động không?
- 29. SMS Twilio không có trong điện thoại di động
- 30. Số hiển thị HTML trên điện thoại di động
Heres a thread rằng có lẽ có thể giúp bạn: http: //stackoverflow.com/questions/1606587/how-to-use-pil- để thay đổi kích thước và áp dụng-xoay-exif-information-to-the-file – Jingo
Điều này có thể giúp bạn http://stackoverflow.com/questions/4228530/pil-thumbnail-is-rotating-my-image – Rakesh