JPEG là một chương trình nén mất dữ liệu, vì vậy việc giải nén-giải nén-recompression thường làm giảm chất lượng hình ảnh hơn nữa cho mỗi bước. Có thể xoay hình ảnh JPEG mà không bị mất thêm không? Từ những gì ít tôi biết về thuật toán JPEG, nó ngây thơ có vẻ như có thể tránh mất thêm với một chút nỗ lực. Các chương trình thao tác hình ảnh phổ biến nào (ví dụ: GIMP, Paint Shop Pro, Thư viện ảnh Windows) và thư viện đồ họa gây ra mất chất lượng khi thực hiện xoay vòng và điều gì không?Có thể xoay ảnh JPEG được nén mà không làm mất chất lượng không?
Trả lời
Có, có thể xảy ra đối với một số trường hợp nhất định: Xoay 90 độ và lật trên hình ảnh có kích thước là bội số của 8. Tâm của thuật toán JPEG - phần mất - liên quan đến việc phá vỡ hình ảnh thành các khối 8x8 pixel, thực hiện một khối discrete cosine transform trên khối và sau đó lượng tử hóa kết quả. Ngoài ra còn có một số chuyển đổi không gian màu và nén không bị mất của các khối trên đầu trang này. các hệ số cơ bản giống nhau, nhưng có thể được chuyển đổi và/hoặc với một số thay đổi dấu hiệu tùy thuộc vào phép biến đổi, do đó, các bước cơ bản để xoay hoặc lật hình ảnh sẽ mất liên quan:
- Decompress và giải nén các khối
- Transpose và/hoặc dấu lật các hệ số DCT cho mỗi khối
- cải tổ các khối vào đơn hàng mới của họ (nếu không các khối 8x8 sẽ được luân chuyển nhưng vẫn ở vị trí cũ)
- Giải nén tất cả bằng các bước nén không bị mất.
Tuyệt đối - chỉ cần thay đổi giá trị định hướng trong dữ liệu EXIF. Phần lớn các chương trình hình ảnh sẽ tôn trọng cài đặt này và hiển thị hình ảnh "xoay".
Cũng có thể "thủ công" (ví dụ: lập trình) xoay hình ảnh theo kiểu không mất thời gian nếu tiêu chí nhất định là đúng - xoay phải là 90/180 độ và chiều rộng/chiều cao phải là bội số của khối. Bạn cũng có thể lật/gương nó. Tôi không biết liệu các chương trình hình ảnh có đủ thông minh cho trường hợp đặc biệt hoạt động này hay không. Tôi đoán là không.
Bạn có thể "thủ công" thực hiện phép chuyển đổi không bị mất 90-180-270 với jpeg. – xpda
thay đổi Exif của hình ảnh sẽ không làm bất kỳ điều gì với chính dữ liệu và một số người xem hình ảnh không xử lý tốt.cộng thêm, khó chơi hơn một chút trong trường hợp bạn muốn sửa đổi hình ảnh, vì bạn phải xem xét định hướng ... –
Có, điều đó là có thể.
Tìm kiếm nhanh trên google cung cấp danh sách các chương trình này which do this
Bạn có biết thư viện nào làm việc đó không? –
Nếu bạn đang nói về xoay ảnh JPEG thì không có quyền nén tiếp theo nào? Đó là về xoay vị trí pixel.
Thực hiện xoay vòng với bất kỳ chương trình nào có khả năng sẽ thay đổi thứ nguyên trung gian, vì nó cần phải quản lý hình ảnh gốc, đây có thể là vấn đề cần cân nhắc.
Trừ khi bạn xoay theo bội số của 90 độ thì hình ảnh của bạn sẽ phải thực hiện một số loại nội suy có thể làm giảm chất lượng hình ảnh của bạn. Sử dụng thuật toán nội suy tốt sẽ giúp ích ở đây.
Để mở và nén lại, tôi không chắc chắn bạn sẽ thực sự có chất lượng kém hơn hay không, nhưng sau đó tôi không chắc chính xác cách thức hoạt động của JPEG.
Tôi khuyên bạn nên cố nén, thao tác và nén lại và tự mình xem nếu kết quả đủ tốt. Điều gì là đủ tốt là tùy thuộc vào ứng dụng của bạn.
Mở và nén lại, đặc biệt là nhiều lần, chắc chắn sẽ dẫn đến chất lượng kém hơn. Đây là một điểm yếu cơ bản của việc nén không mất dữ liệu. (Có hay không nó là tồi tệ hơn, đủ để chăm sóc chắc chắn là chủ quan như bạn đề nghị.) –
Từ JPEG FAQ:
"Có một vài chuyên hoạt động có thể được thực hiện trên một tập tin JPEG mà không cần giải nén nó, và do đó mà không bị mất thế hệ mà bạn muốn thường nhận được từ tải và tái lưu hình ảnh trong trình chỉnh sửa hình ảnh thông thường. Trong cụ thể là có thể thực hiện quay 90 độ và lật không cần thiết, nếu kích thước hình ảnh là bội số của khối của tệp là kích thước (thường là 16x16, 16x8 hoặc 8x8 pixel đối với các ảnh JPEG màu).
...Nhưng bạn cần phần mềm đặc biệt; xoay hình ảnh trong trình chỉnh sửa hình ảnh thông thường sẽ không bị mất dữ liệu."
Có một chương trình có tên jpegtran
jpegtran - một tiện ích cho lossless chuyển mã giữa các định dạng JPEG khác nhau.
Lưu ý: gói tương ứng có tên 'libjpeg-turbo' trên ArchLinux. – VasyaNovikov
CẢNH BÁO: Tôi cũng phát hiện ra rằng jpegtran _can trên thực tế_ mất chất lượng. Nó có thể xảy ra với jpeg mà kích thước không thể chia hết cho 16. Nhận xét từ việc biết mọi người chào đón. – VasyaNovikov
Theo bài báo xuất sắc trên Understanding Digital Image Interpolation bởi Sean McHugh:
Interpolation cũng xảy ra mỗi khi bạn xoay hoặc bóp méo hình ảnh. (...) Xoay 90 ° là không tổn hao vì không có pixel nào phải được định vị lại vào đường viền giữa hai pixel (và do đó được chia).
và cuối cùng kết thúc với
tránh xoay hình ảnh của bạn khi có thể; nếu ảnh chưa được chỉnh sửa yêu cầu, xoay vòng không quá một lần.
Nếu nó có thể giúp:
Đang cố gắng để làm tốt hơn so với Microsoft (Windows 7) xem hình ảnh tự nhiên và tùy chọn xoay vòng nhấp chuột phải của nó, tôi đã thử một số ứng dụng của liên kết sau: http://jpegclub.org/losslessapps.html
Ví dụ, tôi đã thử FastStone Image Viewer, XnView, Photosurfer, JPEG Lossless Rotator, Trình xem ảnh ExifPro.
KHÔNG có ảnh nào mang lại hình ảnh lớn hơn trình xem ảnh cơ bản của Windows 7 sau khi xoay 90 ° đơn giản. Đó là thừa nhận giới hạn để kết luận quá nhanh, nhưng tôi vẫn chưa tìm thấy một ứng dụng xoay .jpeg không mất dữ liệu thực sự cho thời điểm này, và trong mọi trường hợp không tốt hơn so với Windows tích hợp sẵn.
- 1. JPEG có bị mất khi chất lượng được đặt thành 100 không?
- 2. Thay đổi kích thước hình ảnh trong asp.net mà không làm mất chất lượng hình ảnh
- 3. Python PIL jpeg chất lượng
- 4. Cách thay đổi kích cỡ hình ảnh mà không làm mất chất lượng
- 5. Có độ nén mất nhanh hơn JPEG không?
- 6. Phương pháp PHP nào tốt nhất để giảm kích thước hình ảnh mà không làm mất chất lượng
- 7. Nén ảnh JPEG
- 8. UIImage Thay đổi kích cỡ mà không làm mất chất lượng
- 9. Mất chất lượng hình ảnh PNG sau CarrierWave :: RMagick resize_to_fit
- 10. Lưu/nhận ảnh JPEG từ thư viện người dùng mà không cần nén lại
- 11. Hình ảnh PHP xoay mất chất lượng sau mỗi lần quay
- 12. tỷ lệ nén jpeg
- 13. IOS: Giảm kích thước hình ảnh mà không làm giảm chất lượng hình ảnh
- 14. Làm cách nào để phát hiện nén JPEG 2000 không bị mất?
- 15. drawInRect: mất chất lượng độ phân giải hình ảnh
- 16. Kẹp giấy: Chỉ định chất lượng jpeg/jpg
- 17. Quay JPEG với .NET với mức tổn thất tối thiểu về chất lượng
- 18. Nén PDF bị mất
- 19. Xoay JPEG không bị mất (90/180/270 độ) trong Java?
- 20. Nén hình ảnh không bị mất khi đang bay
- 21. .NET Saving jpeg với cùng chất lượng như nó đã được tải
- 22. EmguCV - cách chỉ định chất lượng jpeg khi lưu hình ảnh?
- 23. Bitmap được nén với chất lượng = 100 kích thước tệp lớn hơn bản gốc
- 24. Danh sách ảnh: Hình ảnh 32 bit bị mất chất lượng
- 25. Png trên jpeg (hiệu ứng nước) chất lượng kém?
- 26. giữ nguyên chất lượng hình ảnh
- 27. JPEG không bị mất - không thể tìm thấy bất kỳ hình ảnh mẫu nào, các tệp DICOM
- 28. Có chất lượng, kích thước tệp hay lợi ích khác đối với kích thước JPEG là bội số của 8px hoặc 16px không?
- 29. Mức độ chất lượng nào Image.Save() sử dụng cho các tệp jpeg?
- 30. mất chất lượng hình ảnh đáng chú ý khi nhập từ thư viện iOS
Có một thư viện java mà thực hiện điều này? –