11

câu hỏi này có thể là "Câu hỏi mở" và nhiều người trong số các bạn có thể mong muốn đóng nó, nhưng xin đừng. Hãy để tôi giải thích.Ngoài tiêu chuẩn/tiến bộ, loại nén JPEG thứ 3: tải theo kênh?

Như chúng ta đều biết, JPEG có hai loại nén (ít nhất là trong Photoshop lưu thoại)

  • tối ưu hóa, nơi hình ảnh đã được nạp kinda như line-by-line
  • tiến bộ, nơi hình ảnh là nạp hình khảm đầu tiên, dần dần tốt hơn cho đến độ phân giải ban đầu

Tôi đã đọc rất nhiều PNG/JPEG tối ưu hóa trước đây, nhưng bây giờ tôi đã gặp phải loại nén thứ ba tuyệt vời này. Các JPEG trong câu hỏi là này

http://storage.googleapis.com/marc-pres/boston-event-1012/images/google-data-center.jpg

Hãy thử tải các liên kết trong Chrome/Firefox (trong IE/Safari chỉ đến khi hình ảnh đã được nạp đầy đủ sau đó hiển thị)

bạn có thể quan sát:

    Hình ảnh
  1. được tải đầu tiên màu đen & trắng
  2. sau đó trông giống như Đỏ kênh được tải
  3. tiếp theo kênh Xanh nạp
  4. kéo dài kênh xanh nạp

Tôi đã cố gắng tải nó một lần nữa với một kết nối rất chậm mô phỏng và quan sát thấy rằng các JPEG không phải là chỉ tải theo lệnh kênh , nhưng theo cách tiến bộ là tốt. Vì vậy, hình ảnh được tải đầu tiên là bức tranh trắng và trắng sau đó là mosaic màu xanh lá cây-ish sau đó dần dần khảm đầy đủ màu sắc và cuối cùng là độ phân giải đầy đủ và hình ảnh đầy đủ màu sắc. Đây là công nghệ tuyệt vời, giả sử bạn đang xây dựng một tạp chí điện tử, nơi mỗi trang có rất nhiều hình ảnh, bạn muốn người dùng lướt nhanh qua các trang và loại hình ảnh này chính xác là những gì hoạt động tốt nhất. Để xem trước nhanh, tải hình thu nhỏ trắng-n-trắng, nếu người dùng ở lại, hãy tải đầy đủ hình ảnh gốc.

Vì vậy, câu hỏi của tôi là: Làm thế nào tôi có thể tạo ra hình ảnh ví dụ sử dụng Python Gối hoặc ImageMagick, hay bất kỳ loại mở phần mềm mã nguồn?

Nếu bạn cho rằng câu hỏi này không phù hợp, hãy bình luận, đừng chỉ đóng nó lại.

Cập nhật 1:

Hóa ra Google đã sử dụng công nghệ này trong tất cả các hình ảnh JPEG của nó 1, 2 ví dụ this

Cập nhật 2: Tôi tìm thấy một clue

+3

Có vẻ như một hình ảnh tiến bộ không phải là loại JPEG thứ 3. Hình ảnh JPEG lũy tiến chứa nhiều "lần quét". Mỗi lần quét thường chứa thông tin chi tiết dần dần (hệ số AC) cho MCUs. Không có gì ngăn cản bạn điền vào mỗi lần quét với thông tin cho mỗi kênh riêng lẻ (Luma/Cr/Cb) mỗi lần một. – BitBank

+1

Để tìm hiểu về các cách khác nhau mà mã JPEG có thể được mã hóa, người ta có thể đọc về [tài liệu ITU T.81 (có sẵn trên mạng trực tuyến của w3.org)] (http://www.w3.org/Graphics/JPEG/ itu-t81.pdf) và đọc về đánh dấu SOF (Start of Frame) và SOS (Start of Scan). Cụ thể, SOF phải chỉ định tổng số thành phần (kênh màu), trong khi SOS có thể chỉ định bất kỳ tập hợp con nào của chúng. Một hình ảnh JPEG có thể bao gồm nhiều SOS (quét). Đó là một lỗi thực hiện bộ giải mã JPEG phổ biến để bỏ bê tất cả trừ lần quét đầu tiên. – rwong

Trả lời

7

Các dữ liệu hình ảnh trong một file JPEG có thể được thái lát lên bằng nhiều cách khác nhau, và những lát (hoặc "quét" như chúng thường được gọi là) có thể được lưu trữ trong tệp theo nhiều đơn đặt hàng khác nhau.

Trong hầu hết các tệp JPEG, lần quét đầu tiên trong tệp chứa tất cả các thành phần màu của hình ảnh, xen kẽ nhau nếu nó là một hình ảnh màu. Trong một JPEG không tiến bộ, tệp sẽ chỉ chứa một lần quét. Trong một JPEG tiến bộ, các lần quét khác sẽ theo sau, mỗi lần quét có thể chứa một thành phần hoặc nhiều thành phần.

Nhưng không có gì yêu cầu nó được thực hiện theo cách đó. Nếu lần quét đầu tiên trong tệp không chứa tất cả các thành phần màu sắc, chúng tôi có thể gọi tệp đó là "không xen kẽ".

Tệp mẫu của bạn không được xen kẽ và chúng cũng tiến triển. Các ảnh JPEG không xen kẽ tiến bộ dường như được hỗ trợ rộng rãi hơn các ảnh JPEG không xen kẽ không tiến bộ.

Phần mềm IJG libjpeg chuẩn có khả năng tạo các tệp không xen kẽ. Mặc dù nó không phải là chính xác dễ dàng, bạn có thể sử dụng tiện ích cjpeg của mình, với tùy chọn -scans được ghi lại trong tệp wizard.txt.

+0

một người bạn của tôi chỉ cho tôi thấy 'echo -e' 0; \ n1; \ n2; ' > script; cjpeg -scans script -outfile out.jpg in.ppm' – est

Các vấn đề liên quan