Câu trả lời:
Bạn có thể, nhưng chỉ khi trình xem JPEG của bạn hỗ trợ tiện ích mở rộng JPEG SmartScale . jpegtran có thể làm điều này với kích thước N / 8, với N = 1..16. Về cơ bản, kích thước khối DCT được thay đổi từ 8x8 sang một thứ khác trong quá trình nén lại (ví dụ: 4 x 4), giúp thu nhỏ hình ảnh một cách hiệu quả.
Lưu ý: SmartScale được giới thiệu trong phiên bản 8 của thư viện libjpeg, nhưng nó không được người xem ủng hộ rộng rãi.
Một tài liệu mô tả các thay đổi chi tiết có thể được tìm thấy ở đây: Evolution of JPEG .
EDIT: Có vẻ như hầu hết người xem thực sự không thể hiển thị những hình ảnh này, vì chúng dựa trên libjpeg-turbo. Và libjpeg-turbo đã chọn không thực hiện tính năng này . Trên thực tế, tôi đã thử khá nhiều chương trình (trên Ubuntu 14.04 và Windows 8) và không có chương trình nào có thể hiển thị hình ảnh được thu nhỏ được tạo bằng jpegtrans. Ngay cả Photoshop, IrfanView và GIMP đều thất bại.
EDIT 2: Trên thực tế, Ubuntu và Fedora thậm chí không gửi thư viện libjpeg8, mà thay thế hoàn toàn bằng phiên bản libjpeg-turbo. Vì vậy, không có chương trình nào có thể đọc các tệp JPEG SmartScale, lưu cho một vài tệp nhị phân được liên kết tĩnh với thư viện libjpeg8 ban đầu.
Câu trả lời ngắn gọn là không. Một hình ảnh JPEG sử dụng nén, có nghĩa là mỗi byte đầu ra phụ thuộc vào tất cả các byte khác. Nếu bạn thay đổi số byte hình ảnh, thì bạn phải giải nén và giải nén.
Sẽ có sự mất chất lượng do quá trình nén lại, vì JPEG sử dụng nén mất dữ liệu, nhưng dù sao bạn cũng đang giảm chất lượng bằng cách chia độ phân giải. Bạn có thể có được chất lượng tốt nhất có thể từ hình ảnh có độ phân giải thấp bằng cách tăng mức chất lượng JPEG khi giải nén, mặc dù điều này tất nhiên sẽ làm tăng kích thước tệp.
Nếu bạn làm việc nhiều với hình ảnh, tốt nhất là làm việc ở định dạng nén không mất dữ liệu, chẳng hạn như PNG, chỉ chuyển đổi thành JPEG khi hình ảnh được hoàn thiện, tất nhiên là bạn có thêm dung lượng đĩa.