2012-12-23 16 views
7

Có thư viện exif ngoài đó cho Python 3.x không? Có vẻ như mọi thư viện exif mà tôi chạy vào chỉ dành cho Python 2.x. Tôi không cần bất cứ điều gì quá ưa thích. Chỉ cần đọc các giá trị là đủ.Thư viện đọc Exif

+1

Đó là loại gian lận, nhưng chúng tôi gọi [Phil Harvey's exiftool] (http: //www.sno.phy. queensu.ca/~phil/exiftool/) từ Python sử dụng tiến trình con với các tùy chọn '-json -fast - @ argfile'. Nó đơn giản và đầy đủ, và nó nhanh khi bạn cần xử lý hàng ngàn hình ảnh theo lô (như chúng tôi làm). –

Trả lời

14

Tùy chọn 1. Sử dụng pyexiv2. Xem: pyexiv2 Bug #824440: Python 3 support Bạn cần tăng python cho py3k và cũng có thể tự áp dụng bản vá được đăng ở cuối lỗi ở trên, nhưng ngoài việc nó hoạt động. Có lẽ dễ nhất để có được và chạy theo Ubuntu mới nhất.

Tùy chọn 2. Sử dụng PIL Nhược điểm: nhánh/ngã ba này dường như không được phát triển tích cực.

from PIL import Image 
from PIL.ExifTags import TAGS 

image = Image.open("test.jpg") 
exif = image._getexif() 
# decode exif using TAGS 

Tùy chọn 3. Sử dụng PythonMagick

from PythonMagick import Image 

img = Image("image.jpg") 
print img.attribute("EXIF:Orientation") 

Xem thêm: Exif manipulation library for python

+0

Ah. Đã không nhận ra PIL đã có một ngã ba Python3. Tôi sẽ thử và lấy lại cho bạn. –

+0

Bạn có thể kiểm tra điều này trên Câu hỏi này, tải xuống hình ảnh và thử lấy ImageDescription không. http://stackoverflow.com/questions/22173902/how-to-get-image-title-in-python-django – Clayton

5

Để tham khảo, các pyexiv2 homepage bây giờ có một cảnh báo không dùng nữa mà chỉ vào Gexiv2, một wrapper GObject-mẫn dựa trên libexiv2 (cùng một thư viện pyexiv2 kết thúc tốt đẹp) đặc biệt cho mục đích hỗ trợ Python 3.x. Thật không may, tại thời điểm viết, cài đặt Gexiv2 vẫn còn đau đớn và vì vậy đến nay tôi đã không thể làm cho nó hoạt động trên Ubuntu Precise (có vẻ như các libs đã lỗi thời - có thể phục vụ cho tôi để gắn bó xung quanh trên LTS ...), vì vậy PIL vẫn là lựa chọn tốt nhất để đọc thẻ EXIF ​​bằng Python 3.

+0

Liên kết của bạn với gexiv2 dường như đã chết. –

+0

Cảm ơn - nên được khắc phục ngay bây giờ –

+0

Chà, thật nhanh! –