Android 的 Picture.writeToStream() 保存的格式是否记录在案?



我知道我可以查看源代码,但我想知道是否有android.graphics.Picture.writeToStream(OutputStream)使用的格式的任何文档。

您可以查看SkPictureRecord.cpp。看起来,绘制函数的细节通过以下方法简单地线性序列化:

void addScalar(SkScalar scalar) {
    fWriter.writeScalar(scalar);
}

在任何情况下,与大多数SDK的私有细节一样,利用这些知识可能会在SDK更改时给您带来麻烦。

我想和这里所有这些"skp"文件的格式是一样的:

http://skia.googlecode.com/svn/skp/

你可以打开Skia调试器,它包含在Skia中(如果你能让它编译!)。

话虽如此,当我试图为我的测试视图打开writeToStream()的输出时,skia调试器出现了故障。

<标题> 代码细节

这是Android代码调用的函数。正如您所看到的,它是有版本的。该目录中的测试文件是版本9。我的Galaxy S2上Canvas.writeToStream()的输出是版本1。这里是java代码调用到的地方:

http://code.google.com/p/skia/source/browse/trunk/src/core/SkPicture.cpp # 291

但这显然是一个比我手机上的版本新,因为它是版本9:

http://code.google.com/p/skia/source/browse/trunk/include/core/SkPicture.h # 161

使用SkPicture的不向后兼容的构造函数恢复图片:

http://code.google.com/p/skia/source/browse/trunk/src/core/SkPicture.cpp # 269

这是一个有点遗憾,使它相当黑客使用作为序列化格式,因为你必须嗅嗅PICTURE_VERSION在Android上,然后做一些奇怪的东西给Android正确的版本。

编辑

PICTURE_VERSION在ICS中为1,在Jellybean中为2:

https://github.com/android/platform_external_skia/blob/master/include/core/SkUserConfig.h L44

相关内容

  • 没有找到相关文章

最新更新