2012-06-06 37 views
6

Tôi đang cố nén ảnh chụp bằng máy ảnh trong Android. Nhưng màu sắc của hình ảnh thay đổi khi nó được nén bởi Bitmap.CompressFormat.JPEG. Làm thế nào tôi có thể giải quyết vấn đề này? Cảm ơnTại sao màu của hình ảnh thay đổi khi nó được nén bởi Bitmap.CompressFormat.JPEG

Tôi đã đặt một số hình ảnh mẫu được tạo từ mã của tôi. Bạn có thể thấy màu của tờ giấy ở trên cùng của hình ảnh khác nhau.

Dưới đây là đoạn mã:

Bitmap bitmap = BitmapFactory.decodeFile(Common.FOLDER_PATH + "pic.jpg"); 

FileOutputStream stream2 = new FileOutputStream(Common.FOLDER_PATH + "pic100.jpg");   
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream2); 

FileOutputStream stream3 = new FileOutputStream(Common.FOLDER_PATH + "pic100.png");   
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream3); 

Đây là hình ảnh ban đầu: original
Đây là JPEG: jpg
Đây là PNG: png

+0

Thay đổi màu sắc ở đâu? Tôi không thể nhìn thấy bằng mắt thường. Có phải chỉ là về các đồ tạo tác nén JPEG không? –

+0

Phần giữa là khác với người khác. Tôi có thể thấy giấy trên hình ảnh có chút màu xanh. –

Trả lời

0

JPEG là một định dạng lossy compression và có thể mất thông tin hình ảnh trong quá trình nén. Sự hy sinh của thông tin hình ảnh ban đầu được thực hiện cho một tỷ lệ nén tốt hơn (kết quả là tập tin nhỏ hơn).

Tuy nhiên, nếu điều này không được chấp nhận đối với bạn, bạn nên sử dụng một trong các phương pháp nén không mất dữ liệu bao gồm PNG.

+0

Có, JPEG là nén mất dữ liệu. Nhưng Bitmap.CompressFormat.JPEG thay đổi màu của hình ảnh. Tôi làm cùng một nén trong Photoshop, màu sắc vẫn giữ nguyên. Tôi tự hỏi tôi đã bỏ lỡ điều gì trong đoạn mã. –

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