osgDB.ImageSerializer
是 OpenSceneGraph 中用于图像序列化和反序列化的类。它可以将图像保存为可用于序列化的二进制格式,也可以从已序列化过的二进制数据中重新构建出图像。
ImageSerializer
osg::ref_ptr<osgDB::ImageSerializer> serializer = new osgDB::ImageSerializer();
ImageSerializer
osg::ref_ptr<osgDB::ImageSerializer> serializer = new osgDB::ImageSerializer();
osg::ref_ptr<osg::Image> image = osgDB::readImageFile("textures/wood.jpg");
if (image.valid())
{
std::ofstream outfile("wood.osgim", std::ios::binary);
serializer->writeImage(*image, outfile);
}
上述代码将以二进制格式 wood.osgim
文件保存了 textures/wood.jpg
图像。
osg::ref_ptr<osgDB::ReaderWriter::Options> options = new osgDB::ReaderWriter::Options();
osg::ref_ptr<osgDB::ImageSerializer> serializer = new osgDB::ImageSerializer();
std::ifstream infile("wood.osgim", std::ios::binary);
osg::ref_ptr<osg::Image> image = serializer->readImage(infile, options.get());
上述代码将从二进制文件 wood.osgim
中读取图像数据,然后将其还原为 osg::Image
。
osgDB.ImageSerializer
在序列化和反序列化过程中,采取了以下步骤:
Image::allocateImageForStorage
方法计算图像存储所需空间,并将该空间用于存储数据;序列化完毕后,文件中的二进制数据可直接用于传输或存储,反序列化后的结果数据也可以直接用于显示等。