2011-10-12 38 views
7

Tôi cần giải mã (giải nén thành bitmap) khá nhỏ (khoảng 1200 * 1200) JPEG. Vấn đề là tôi cần phải làm điều đó một cách nhanh chóng. Tôi đã thử libjpeg, và nó khá chậm. Tôi cũng đã thử BitmapFactory.decodeByteArray - nó nhanh hơn một chút, nhưng vẫn chưa đủ nhanh. Một lựa chọn khác là gì? Thư viện gốc (C++) được ưu tiên nhiều.Cách nhanh để giải mã hình ảnh JPEG

P.S. Các ảnh JPEG của tôi được tạo trực tiếp trong bộ nhớ.

P.P.S. Tôi tự hỏi làm thế nào đến libjpeg là chậm hơn so với BitmapFactory.decodeByteArray.

+4

Kể từ khi nào 1200x1200 "khá nhỏ"? Hầu hết các màn hình chỉ 320x240 hoặc hơn. Heck, máy tính để bàn của tôi chỉ có 1280x1024. (1) Tạo một ảnh JPEG nhỏ hơn (2) Chỉ giải mã nó một lần và lưu lại. –

+0

Điểm tốt, thực sự :) Tôi xem xét nó nhỏ kể từ khi tôi bắt đầu làm việc với máy ảnh DSLR. Và tôi đang nhắm mục tiêu máy tính bảng. Bây giờ, như cho các đề xuất của bạn: 1) Đã thử rằng (yếu tố tỷ lệ 2) - hiệu suất vẫn chưa đủ, giảm thêm độ phân giải là không thể chấp nhận. 2) Không có cách nào, tôi cần hiển thị các ảnh JPEG khác nhau trong thời gian thực (nhiều hơn hoặc ít hơn). –

+0

Liên quan đến chênh lệch tốc độ; Mã Android có thể sẽ sử dụng một số lệnh đặt trên CPU ARM để giải mã JPG nhanh hơn mã C có thể sử dụng CPU. – stealthcopter

Trả lời

3

Hãy thử Libjpeg Turbo: http://libjpeg-turbo.virtualgl.org/

+1

Chỉ cần thử nó. Tốc độ chính xác giống như libjpeg chính thức, vì thiết bị của tôi không hỗ trợ NEON (Tegra 2). –

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