Android SKIA 图像解码
Posted
技术标签:
【中文标题】Android SKIA 图像解码【英文标题】:Android SKIA Image Decoding 【发布时间】:2011-04-22 02:26:54 【问题描述】:嗨,
我目前正在研究android如何解码和图像文件。当我检查代码时,它似乎正在调用 SKIA 库。但是,根据源码我怎么知道android/skia支持的图片文件格式是什么?
我不是编程专家,所以我仍在努力理解 C++ 和 Java 语言。
我现在迷失在 BitmapFactory.cpp(JNI 文件)中的SkImageDecoder* decoder = SkImageDecoder::Factory(stream);
。 SkImageDecoder::Factory(stream)
好像是一个模板。
谁能解释一下SKImageDecoder::Factory()
里面发生了什么?任何反馈将不胜感激。
谢谢, 艺人
【问题讨论】:
【参考方案1】:在skia/include/images/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::Factory(stream) 函数中,它会根据 Stream 的 header 分析,新建一个解码器实例。
【讨论】:
【参考方案2】:通过查看Android的源代码,我认为支持以下图像格式。 ICO(Windows ICON 图像格式)、BMP、JPEG、WBMP、GIF 和 PNG。
如果我错了,请纠正我。谢谢你。
【讨论】:
【参考方案3】:PNG、JPEG 和 GIF 是支持的格式。 Android 上使用的主要格式是 PNG 和 JPEG。
【讨论】:
感谢您的回复。你知道android在源代码中的哪里检查文件格式是否受支持吗?我认为这是在'SkImageDecoder::Factory(stream);'中完成的在 BitmapFactory.cpp(JNI) 中。但我还是想不出具体是在哪里做的。 我在 SKIA 库中找到了 ff 类 SkFPDFEMBImageDecoder // FPDFEMB SkBMPImageDecoder // BMP 文件 SkGIFImageDecoder // GIF 文件 SkICOImageDecoder // ICO 文件? SkJPEGImageDecoder // 基线 JPEG 格式 SkPNGImageDecoder // PNG SkPVJPEGImageDecoder // 渐进式 JPEG 格式 ? SkWBMPImageDecoder //无线应用协议位图格式 只是为了确认android是否使用上面的类,我试图显示一个有效的ICO文件('Bitmap bmap = BitmapFactory.decodeFile("/sdcard/vlc.ico");')和它在模拟器中正确显示。以上是关于Android SKIA 图像解码的主要内容,如果未能解决你的问题,请参考以下文章