【问题标题】:Android SKIA Image DecodingAndroid SKIA 图像解码
【发布时间】: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()里面发生了什么?任何反馈将不胜感激。

谢谢,
艺人

【问题讨论】:

    标签: android skia


    【解决方案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");')和它在模拟器中正确显示。
        猜你喜欢
        • 1970-01-01
        • 2015-09-06
        • 2015-06-04
        • 1970-01-01
        • 2020-05-21
        • 2014-02-01
        • 1970-01-01
        • 2012-11-23
        • 1970-01-01
        相关资源
        最近更新 更多