2015年4月25日 星期六

Fresco : an image management library





    書在F8發表了自己的Image Loader Library(Android)叫做Fresco,因為他們在市面上找不到完全符合需求的Library,所以自己就寫了一個(這邏輯很Facebook),它主要強調功能有五:1)有更佳的記憶體管理、2)支援Progressive JPEG、3)Animation Format(GIF和WebP)、4)Drawing(更整合customize layer:例如想要塞浮水印之類的)以及 5)更加的Loading體驗。

針對第五點想要特別強調:1) 它可以同時設定多種resolution的圖片,讓較低解析度的圖片先秀出、2) 支援EXIF Thumbnail、3) Auto-resize rotation(base on EXIF)、 4) 讓Android 2.3的裝置也支援WebP。

翻了翻它的source code發現,所以decoder都適用NDK寫的,包含jpeg、png、gif跟WebP真的是佛心來著。看來該把原本在用的Ion拔掉了。


2015年4月8日 星期三

GIF Encoder on Android



    近跟臉書的Messenger Platform合作了一款新的APP叫做GIFCAM(希望大家趕快去下載來玩唷!),看APP的名稱就知道跟GIF格式有所相關,今天想要分享(抱怨)在開發中碰到的痛點之一GIF Encoder。

為什麼痛呢?第一沒有官方support的版本(iOS在ImageIO Framework裡);第二有3rd party library是存JAVA的solution,但performance就是差到很誇張;第三想找NDK solution但找不太到標準或比較常用的library。

基於上面的思路,想必要自己把它擠出來了,所以我參考了一個半成品叫做Gifflen,看起來是我們想要的答案,但是,它的code style不太像個OK的library,果然用了之後碰到很多問題,細節之後再透過其他文章跟大家分享,總之為了要達成像iOS ImageIO的效能,我們把GIF的Spec認真的看了一遍,一個一個byte去看iOS為什麼可以做得比較好(之後我們會把自己的Gifflen再open source出來),目前雖然沒有達到一樣,但效能跟輸出結果還差強人意,勉強可以通過測試並且上線。