PNG có chứa dữ liệu EXIF ​​như JPG không?


100

Tôi đã tự hỏi liệu PNG có chứa dữ liệu như sau không?

Những gì tôi đã làm là chuyển đổi tệp jpg sang định dạng png và tôi đã mong đợi để truy xuất cùng một thông tin mà tôi có trên jpg như bên dưới:

Hiện đang sử dụng thư viện as3 này để đọc dữ liệu.

  • IDF0 --- IDF @ [134 - 248] (9 mục)
    • Định hướng (RÚT GỌN): 1
    • Độ phân giải XRes (RATIONAL): 72/1
    • YResolution (RATIONAL): 72/1
    • Độ phân giải (RÚT GỌN): 2
    • Phần mềm (ASCIIx16): QuickTime 7.6.6
    • DateTime (ASCIIx20): 2011: 10: 02 22:43:37
    • HostComputer (ASCIIx16): Mac OS X 10.6.8
    • Exif IFD (DÀI): 8 34853
    • GPS IFD (DÀI): 248

 

  • EXIF IDF --- IDF @ [8 - 134] (10 mục)
    • ExifVersion (UNDEFINEDx4): 0220
    • DateTimeOrigina (ASCIIx20): 2011: 04: 14 17:22:01
    • Bình luận người dùng (UNDEFINEDx63): ASCII
    • FlashpixVersion (UNDEFINEDx4): 0100
    • ColorSpace (RÚT GỌN): 1
    • PixelXDimension (DÀI): 1022
    • PixelYDimension (DÀI): 486
    • Không xác định (ASCIIx13): Thẻ hình ảnh-LOL
    • SceneCaptureType (RÚT GỌN): 0

 

  • GPS IDF --- IDF @ [248 - 338] (7 mục)
    • Chỉ số khả năng tương tác (ASCIIx2): N
    • Phiên bản khả năng tương tác (RATIONALx3) @ 425: 52/1, 1144/100, 0/1
    • Không xác định (ASCIIx2): W
    • Không xác định (RATIONALx3): 1/1, 4392/100, 0/1
    • Không xác định (RATIONAL): 5/1
    • Không xác định (ASCIIx2): T
    • Không xác định (RATIONAL): 3694/117

 

Câu trả lời:


131

Chỉnh sửa: Phiên bản 1.5.0 (tháng 7 năm 2017) của Tiện ích mở rộng cho Đặc tả PNG 1.2 cuối cùng đã thêm một đoạn EXIF. Vẫn còn phải xem nếu bộ mã hóa-giải mã bắt đầu hỗ trợ nó.

Bản gốc: PNG không nhúng thông tin EXIF. Tuy nhiên, nó cho phép nhúng các " khối " siêu dữ liệu vào bên trong hình ảnh. Một số phần được tiêu chuẩn hóa tương ứng với một vài thuộc tính EXIF ​​(kích thước vật lý, dấu thời gian). Và cũng có thể lưu trữ dữ liệu văn bản tùy ý dưới dạng key=>valuecác cặp hoặc để xác định các loại phân đoạn mới. Vì vậy, về lý thuyết, bạn có thể lưu trữ bất kỳ thông tin EXIF ​​nào ... nhưng, than ôi, ở định dạng tùy chỉnh của riêng bạn. Có vẻ như một số nỗ lực để chuẩn hóa đã không bắt kịp.


30

Chỉnh sửa: Kể từ tháng 7 năm 2017, PNG chính thức hỗ trợ một đoạn eXIf để lưu trữ siêu dữ liệu EXIF ​​( đặc tả ). ExifTool 10.59 trở lên ghi EXIF ​​vào đoạn mới này dưới dạng ảnh PNG.

Bản gốc: ImageMagick lưu trữ thông tin EXIF ​​trong một đoạn zTXt PNG "Loại cấu hình thô APP1" khi chuyển đổi từ ảnh JPEG. Phương pháp lưu EXIF ​​trong hình ảnh PNG này cũng được ExifTool hỗ trợ (và tôi tin rằng Exiv2 cũng vậy), nhưng nó không phải là một phần của đặc tả PNG hoặc EXIF.


Điều đó rất tốt để biết! Bạn có biết nó cũng trích xuất nó từ TIFF không?
Olivier - interfaSys

4
Nhóm PNG gần đây đang xem xét thêm một đoạn "eXIf" và / hoặc "zXIf" mới để lưu trữ thông tin EXIF. ExifTool 10.43 đã thêm hỗ trợ cho các khối "exIf" và "zxIf" để hỗ trợ điều này.
PhilHarvey

9

PNG không hỗ trợ nhúng thông tin EXIF. Khi bạn chuyển đổi từ JPEG sang PNG, thông tin sẽ bị mất.


1
này có tài liệu nào nói điều đó không? vì tôi cần một bằng chứng để cho người giám sát của tôi biết vì tôi đang làm việc trong một dự án yêu cầu tôi đọc thông tin EXIF ​​cho png. Nếu đúng như vậy, tôi có thể cho anh ta và cho anh ta biết về nó
user1004413

9
Bạn có thể hướng anh ta đến đặc điểm kỹ thuật , không có đặc điểm kỹ thuật ngầm hoặc rõ ràng cho việc nhúng dữ liệu EXIF ​​hoặc đến mục nhập wiki PNG .
Nhận thức

5
Điều này không hoàn toàn đúng. Ví dụ: nếu bạn sử dụng convert(từ ImageMagick) để chuyển đổi JPEG thành PNG và sau đó sử dụng convertđể chuyển đổi PNG trở lại JPEG thì JPEG mới sẽ vẫn có Dữ liệu EXIF ​​trong đó.
mofoe

GIMP lưu trữ "Nhận xét của người dùng" trong PNG dưới dạng siêu dữ liệu "EXIF2". Có vẻ như có một lĩnh vực cho điều này trong các phần. Tôi không chắc về cách thức và lý do chính xác. Bản thân tôi cũng có một yêu cầu tương tự.
VectorVictor

1
Vào năm 2012, câu trả lời này có thể đúng, nhưng liệu nó có còn chính xác?
RockPaperLz- Mask it or Casket

7

Kể từ tháng 7 năm 2017 , có vẻ như đã được đăng ký chính thức cho dữ liệu EXIF ​​được gọi là ... eXIf :

Phân đoạn dữ liệu của eXIf chunk chứa cấu hình Exif ở định dạng được chỉ định trong "4.7.2 Cấu trúc khả năng tương tác của APP1 trong dữ liệu nén" của [CIPA DC-008-2016] ngoại trừ điểm đánh dấu JPEG APP1, độ dài và "Exif Mã ID "được mô tả trong 4.7.2 (C), tức là," Exif ", NULL và byte đệm, không được bao gồm.

Lưu ý rằng đây là cả A) mới được vài tháng (tính đến thời điểm viết bài) và B) là phần mở rộng tùy chọn, không phải là một phần của thông số kỹ thuật cơ bản. Do đó, hỗ trợ cho eXIf chunk có thể bị hạn chế trong nhiều ứng dụng.


2

Ý bạn là:

  1. Các tệp PNG có chứa các mục siêu dữ liệu mà bạn đã liệt kê không? Câu trả lời ngắn gọn: Nó khác nhau.
  2. PNG có sử dụng tiêu chuẩn EXIF ​​để lưu trữ siêu dữ liệu đó không? Câu trả lời ngắn gọn: Nói chung là không.

Nói chung, PNG sử dụng các phần khác nhau là một phần của tiêu chuẩn PNG để lưu trữ siêu dữ liệu. Để xem qua danh sách của bạn:

  • Định hướng - Không áp dụng cho PNG - cố định thành từng hàng bắt đầu từ trên cùng bên trái.
  • XResolution, YResolution, ResolutionUnit - pHYs chunk.
  • Phần mềm, Máy chủ lưu trữ, siêu dữ liệu văn bản khác - các phần tEXt, iTXt, zTXt .
  • DateTime - Tôi không rõ đây là ngày / giờ. tIME cho biết ngày / giờ sửa đổi cuối cùng đối với dữ liệu hình ảnh; các ngày / giờ khác có thể được lưu trữ trong các đoạn văn bản. Thời gian tạo thực sự là một khóa phân đoạn văn bản được xác định, nhưng định dạng và cách xử lý múi giờ không được quy định, đó là một thiết kế tồi.
  • ColorSpace, PixelXDimension, PixelYDimension - không chắc chúng sẽ là siêu dữ liệu như thế nào. Chúng là nền tảng cho hình ảnh, và như vậy là trong đoạn IHDR .
  • Không chắc những người khác mà bạn đã liệt kê có nghĩa là gì.

Nhưng thật khó hiểu, trong những năm gần đây, một đoạn eXIf đã được thêm vào danh sách chính thức của các đoạn mở rộng (về cơ bản là một phụ lục cho thông số PNG). Có lẽ nó được nhắm mục tiêu để lưu giữ thông tin trong các tệp được chuyển đổi từ JPEG / TIFF sang PNG và không nhằm mục đích sử dụng trong các tệp được tạo dưới dạng PNG ban đầu, nhưng điều đó không rõ ràng.


0

Có và không.

Như các câu trả lời khác đã nêu, PNG không có đoạn EXIF ​​chính thức cho đến khi eXIfđược thêm vào v1.5.0 (2017) và theo hiểu biết của tôi, đoạn này vẫn không được hỗ trợ rộng rãi.

Nhưng đó là bởi vì nó không cần nó. Nhiều phần mềm mã hóa EXIF ​​trong PNG theo quy ước trong một đoạn iTXt(hoặc nén zTXt) có ký hiệu "Loại cấu hình thô APP1" . eXIfChunk mới hơn được thiết kế để cung cấp một vị trí tiêu chuẩn cho việc này, mặc dù theo ý kiến ​​của tôi, con tàu hiện đã đi thuyền.

Ngoài ra, phần lớn siêu dữ liệu của tiêu chuẩn EXIF ​​có thể được đại diện bởi XMP, một cơ chế vận chuyển siêu dữ liệu thay thế và mới hơn có không gian tên EXIF ​​cho chính xác mục đích này. Các tệp PNG đã bao gồm các tài liệu XMP (bao gồm cả siêu dữ liệu EXIF ​​đã được dịch) trong iTXtnhiều phần trong nhiều năm. Bạn sẽ thấy rằng nhiều bộ xử lý chuyển đổi nhanh chóng giữa hai bộ xử lý.


Những bộ xử lý tương tự này, dù chúng là gì, có chuyển đổi XMP hoặc EXIF ​​thành / từ các khối siêu dữ liệu PNG tiêu chuẩn khác nhau không?
Stewart

@Stewart Các khối siêu dữ liệu PNG tiêu chuẩn bị hạn chế và không thể đại diện cho độ rộng của dữ liệu EXIF ​​hoặc XMP. Đó là lý do tại sao trước đây chúng tôi đã mã hóa EXIF ​​/ XMP vào các tệp (trong các đoạn văn bản).
Asteroids With Wings
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.