2011-04-22 48 views
2

嗨,Android SKIA圖像解碼

我目前正在研究Android解碼和圖像文件。當我檢查代碼時,它似乎就是在調用SKIA庫。但是,我怎麼知道android/skia支持的圖像文件格式是以源代碼爲基礎的?

我不是編程方面的專家,所以我仍然試圖理解C++和Java語言。

我現在丟失在BitmapFactory.cpp(JNI文件)內的SkImageDecoder* decoder = SkImageDecoder::Factory(stream);SkImageDecoder::Factory(stream)似乎是一個模板。

任何人都可以解釋我SKImageDecoder::Factory()裏面發生了什麼?任何反饋將不勝感激。

謝謝
artsylar

回答

1

通過查看Android的源代碼,我認爲支持以下圖像格式。 ICO(Windows ICON圖像格式),BMP,JPEG,WBMP,GIF和PNG。

如果我錯了,請糾正我。謝謝。

0

PNG,JPEG和GIF是支持的格式。 Android上使用的主要格式是PNG和JPEG。

+0

感謝您的回覆。你知道在源代碼中的Android在檢查,如果文件格式是否支持?我想這是在'SkImageDecoder :: Factory(stream)'中完成的;'在BitmapFactory.cpp(JNI)中。但我仍然無法確定它的具體做法。 – artsylar 2011-04-22 03:50:13

+0

我在SKIA庫中找到了ff類 SkFPDFEMBImageDecoder // FPDFEMB SkBMPImageDecoder // BMP文件 SkGIFImageDecoder // GIF文件 SkICOImageDecoder // ICO文件? SkJPEGImageDecoder //基線JPEG格式 SkPNGImageDecoder // PNG SkPVJPEGImageDecoder //漸進JPEG格式? SkWBMPImageDecoder //無線應用協議位圖格式 – artsylar 2011-04-22 06:43:39

+0

只是爲了確認如果機器人使用上面的類,我試圖顯示有效的ICO文件(「位圖BMAP = BitmapFactory.decodeFile(‘/ SD卡/ vlc.ico’);」)並在仿真器中正確顯示。 – artsylar 2011-04-22 08:06:26

1

在Skia的/包括/圖像/ SkImageDecoder.h文件,存在通過Skia的支持的圖像列表解碼:根據

enum Format { 
    kUnknown_Format, 
    kBMP_Format, 
    kGIF_Format, 
    kICO_Format, 
    kJPEG_Format, 
    kPNG_Format, 
    kWBMP_Format, 
    kWEBP_Format, 

    kLastKnownFormat = kWEBP_Format 
}; 

在SkImageDecoder ::廠(流)函數,它將一個新譯碼器實例分析Stream的頭部。