Điểm:2

Nhận Dữ liệu Pixel từ JPG/JPEG nhưng vẫn mang lại tính toàn vẹn?

lá cờ in

Theo mình biết thì JPG là định dạng nén ảnh mất dữ liệu

Trong khi đó, BMP là một định dạng hình ảnh không nén nói chung, có cấu trúc tệp bao gồm bitmapFileHeader (14 byte) và bitmapInfoHeader (40 byte), phần còn lại là dữ liệu pixel.

Vì vậy, tôi chỉ cần chuyển 54 byte đầu tiên và lưu trữ dưới dạng biến HEADER và lưu trữ phần còn lại trong biến PIXELDATA.

Ở trạng thái này, tôi có thể tự do mã hóa và giải mã PIXELDATA và có thể kết hợp lại nó với HEADER. Vì vậy, tính toàn vẹn của tập tin được duy trì.

Nhưng trong trường hợp của JPG thì khác. Tôi muốn thử đọc các pixel theo cách thủ công, nhưng tôi không biết vị trí của các byte chỉ mục (không giống như BMP bỏ qua 54 byte).

Tôi sử dụng Python với nhiều thư viện khác nhau như PIL hoặc Numpy. Cả hai đều quản lý để đọc Pixels, nhưng khi được lưu dưới dạng tệp JPG mới, nó khác với bản gốc ở chỗ:

  1. So sánh tổng kiểm tra SHA-256.
  2. kích thước tập tin khác nhau.
  3. Một số màu pixel thay đổi so với màu gốc nếu bạn xem xét chi tiết hơn.

Câu hỏi của tôi là, có cách nào khác để đọc dữ liệu pixel của tệp JPG nhưng vẫn cung cấp tính toàn vẹn của tệp JPG gốc khi được lưu trong tệp JPG mới (Cùng tổng kiểm tra, kích thước tệp và thay đổi màu pixel) không?

knaccc avatar
lá cờ es
Tôi nghĩ câu hỏi của bạn có thể được đơn giản hóa thành: Có cách nào để tạo tệp JPG có thể được nén và giải nén nhiều lần mà không thay đổi pixel không? Hoặc có thể bạn chỉ muốn biết cách đặt một tiêu đề khác vào một tệp JPG hiện có mà không phải giải nén và giải nén các pixel.
DannyNiu avatar
lá cờ vu
J2K có thể được sử dụng một cách dễ dàng. Nếu bạn có thể tìm thấy một lib mã hóa JPEG2000 xác định và định dạng đó có thể tương thích với (các) ứng dụng của bạn, thì tôi nghĩ vấn đề đã được giải quyết.
lá cờ ph
Bạn đề cập đến mã hóa trong câu hỏi của mình, nhưng có vẻ như đây thực sự là một câu hỏi về định dạng hình ảnh.
lá cờ ph
Và có một nhận xét rõ ràng rằng cách dễ nhất để không lưu một phiên bản khác là hoàn toàn không lưu nó. Bạn có thể theo dõi nếu bạn có bất kỳ thay đổi nào muốn lưu không? Nếu không thì nén mất dữ liệu sẽ nén mất dữ liệu.
Gilles 'SO- stop being evil' avatar
lá cờ cn
Tôi đang bỏ phiếu để đóng câu hỏi này vì đó là về định dạng và nén hình ảnh. Không có bảo mật có liên quan.
Điểm:1
lá cờ jp

Trong JPG pixel không được lưu trữ. Chúng được bắt nguồn trong thời gian chạy, khi người dùng đọc tệp. Những gì được lưu trữ là một số yếu tố về mức độ thay đổi màu sắc trong một khối nhất định, ví dụ: 8 x 8 pixel.

Dữ liệu được lưu trữ, những yếu tố này, chứa ít thông tin hơn đáng kể so với pixel.

Do đó, bạn không thể tạo JPG với dữ liệu pixel hoàn hảo. Ngay cả khi bạn cố gắng, những yếu tố thực sự lưu trữ dữ liệu này không chứa đủ bit để biểu thị các pixel của bạn.

Điều này là dành cho hầu hết việc sử dụng JPG. Bạn có thể thử một số định dạng cao cấp, lưu trữ nhiều dữ liệu hơn trên mỗi pixel, chẳng hạn như BMP. Tìm kiếm lossless JPG sau đó.Hãy ghi nhớ, rất nhiều dịch vụ trực tuyến sẽ nén lại hình ảnh. Làm hỏng dữ liệu của bạn trong quá trình này.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.