2013-06-03 45 views
17

Tôi đã được chơi với bitmap Android một chút và phát hiện ra, rằng PNG nén mất nhiều thời gian hơn nhiều so với chất lượng JPEG cao nhất. Nhiều hơn nhiều. Trên thiết bị của tôi, có thể mất tới 10 giây so với 1.Tại sao nén PNG chậm hơn nhiều so với JPEG trên Android?

AFAIK, PNG về cơ bản là chuỗi các điểm ảnh đã được nén với giảm phát. Vâng, việc tìm kiếm bộ lọc tốt nhất cho mỗi chuỗi có thể là nhiệm vụ tốn thời gian, nhưng có thể có sự thỏa hiệp được thiết lập giữa tốc độ và hiệu quả nén. Nó không nên chậm hơn JPEG. Làm thế nào đến nó?

Có thể đó là cách khác. Có một số triển khai JPEG cực nhanh trên Android không?

UPDATE: Tôi thực sự chỉ làm những việc như

mBitmap.compress(CompressFormat.JPEG, 100, stream); 

mBitmap.compress(CompressFormat.PNG, 100, stream); 
+1

Bạn nên đặt một số mã để hiển thị cách bạn nén. –

+21

JPEG có thể được tăng tốc phần cứng, PNG luôn được thực hiện trong phần mềm. JPEG mất một lượng thời gian không đổi để xử lý. Hơn 90% thời gian mã hóa và giải mã PNG được sử dụng trong bộ giải mã flate. Quá trình lọc mất một lượng thời gian nhỏ. Xói mòn ở mức chất lượng cao nhất mất một thời gian dài bởi vì nó cố gắng nhiều phương pháp để có được nén tốt nhất. – BitBank

+0

Thực ra, Skia hỗ trợ tăng tốc phần cứng JPEG. Tôi nên kiểm tra mã của tôi trên một trình giả lập sau đó. Nếu khoảng cách hiệu suất làm giảm, thì nó phải là nó. – akalenuk

Trả lời

5

Tôi đã thử nghiệm dự án của tôi trên giả lập với hình ảnh lớn hơn nhiều và mặc dù PNG nén còn nhỏ chậm, không có sự khác biệt lớn trong hiệu suất. Do đó nó phải là do tăng tốc phần cứng, như đã nói bởi BitBank trong bình luận.

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