2010-07-22 34 views
13

Đang cố gắng phát GIF động trên Android tại đây (xem Android: How do a display a large animated gif given a url?). Đó là bất cứ điều gì nhưng trơn tru. Trên Android 1.5, Movie.decodeStream()/decodeFile() trả về một giá trị rỗng. Trên Android 1.6, với các tệp GIF tôi đã có, nó trả về một bộ phim có kích thước bằng không với thời lượng bằng 0 - rõ ràng là không đủ.Chia GIF thành các khung

Câu hỏi được tham chiếu đề xuất chia GIF thành các khung (và sau đó hiển thị chúng). Làm thế nào chính xác để tôi thực hiện điều đó, xin vui lòng?

EDIT: đã thử mở một trong các GIF của tôi bằng giflib GNU trong Windows. Nó nghẹn ngào trên khung hình đầu tiên. Bản thân GIF là tất cả, tất cả các trình duyệt (lưu Android) hiển thị và animate nó tốt.

EDIT2: đã làm việc với giflib 4.1.4. Bạn không chắc chắn những gì đã bị phá vỡ trong 4.1.6, nhưng có bạn đi. Bước tiếp theo: xây dựng giflib cho Android thông qua NDK, bằng cách nào đó tích hợp với lớp Bitmap.

EDIT3: giflib it is. Liên kết với Bitmap.copyPixelsFromBuffer. Các màu sắc tất cả đều xiên ngay bây giờ, nhưng thiết kế cơ bản có vẻ khả thi.

Trả lời

1

giflib 4.1.4 và NDK. Bạn phải tự giải quyết các màu của bảng màu trong GIF để khớp với một trong các định dạng ARGBxxxx của Android, sau đó chuyển mảng pixel tới đối tượng Bitmap qua copyPixelsFromBuffer(). Nếu bạn muốn minh bạch và/hoặc hình ảnh động, bạn phải đi qua các khối mở rộng và tìm kiếm một với mã 0xf9.

Đã chia sẻ mã của tôi, cùng với hướng dẫn, tại đây: http://rathertech.blogspot.com/2014/04/splitting-gif-into-frames-on-android.html

+0

bạn có mã mẫu không? nếu có, xin vui lòng gửi nó. –

+0

Nó khá dài. Tôi có thể gửi e-mail. –

+0

có thể bạn có thể đăng trên pasteBin hoặc sử dụng gitHub hoặc một nơi khác? –

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