Các định dạng PNG có hỗ trợ cho các siêu dữ liệu nhiều hơn hoặc ít hơn tùy ý. Các tiêu chuẩn PNG định nghĩa một tập tin PNG, về cơ bản một loạt các khối, một số trong đó được yêu cầu (và chứa các dữ liệu hình ảnh). Những người khác, tuy nhiên, là tùy chọn. Ví dụ: có một đoạn để lưu trữ thông tin gamma hoặc dữ liệu biểu đồ.
Đặc biệt, có một tEXt
đoạn có thể được sử dụng để lưu trữ các cặp văn bản khóa / giá trị tùy ý. Điều này có thể được sử dụng để vận chuyển xung quanh bất kỳ loại dữ liệu tùy ý nào bạn muốn, miễn là bạn có thể biểu thị dữ liệu đó dưới dạng văn bản (khá có khả năng).
Bạn sẽ cần một thư viện PNG cho phép bạn truy cập và thao tác các khối bổ sung này (chẳng hạn như thư viện tham chiếu ) hoặc bạn sẽ cần phải tự viết. Sau đó, vấn đề chỉ là chọn cách mã hóa dữ liệu bạn muốn dưới dạng cặp khóa / giá trị. Tôi muốn đề xuất như sau:
- chọn các tên khóa có tiền tố với tên hoặc tên mã dự án của bạn để tạo ra một hệ thống "không gian tên" thô sơ và tránh xung đột tiềm ẩn với việc sử dụng dữ liệu của ứng dụng khác
- đừng cố lưu trữ kết cấu thực tế theo cách này, lưu trữ các tham chiếu đến các kết cấu đó chỉ trong cơ sở dữ liệu tài sản của trò chơi của bạn
- dữ liệu như sinh vật hoặc kích thước đối tượng, trọng lượng, et cetera - vô hướng đơn giản, về cơ bản - có thể được lưu trữ tầm thường
Để tạo ra một câu trả lời đầy đủ hơn, tôi cũng chỉ ra rằng có một cách tiếp cận khác (trước đây là câu trả lời của @Vaughn và @ Alexis): mã hóa dữ liệu bổ sung mà bạn muốn trực tiếp trong pixel hình ảnh của mình, phân phối dữ liệu của bạn các bit thứ tự thấp của các kênh màu. Cách tiếp cận này không yêu cầu sử dụng siêu dữ liệu bổ sung, có nghĩa là bạn có thể thực hiện hoàn toàn mà không cần dựa vào nó hoặc lo lắng về các chương trình bên ngoài xử lý không chính xác siêu dữ liệu đó. Nó cũng có một yếu tố "mát mẻ" rất cao và bởi vì bạn chỉ sử dụng các bit có thứ tự thấp, hình ảnh sẽ vẫn trông chính xác với mắt người. Tuy nhiên, điều đó có nghĩa là kích thước hình ảnh của bạn là yếu tố kiểm soát chính đối với lượng dữ liệu bạn có thể lưu trữ; nếu bạn cần thêm dung lượng, bạn cần phân bổ nhiều pixel hơn cho hình ảnh.
Như những người khác đã chỉ ra, quá trình này được gọi là steganography .