Hi,

I need to send a osg::Image over the network to a c# application, so i thought 
to write it into a std::stringstream as jpg or png and send that stream. So i 
googled a bit and found this code:


Code:
int main( int argc, char **argv )
{
    //osg::ref_ptr<osg::Image> startIm = osgDB::readImageFile("layout.jpg");
    osg::ref_ptr<osg::Image> startIm = osgDB::readImageFile("P4110018.jpg");
    osgDB::writeImageFile(*startIm, "new.png");
        startIm->setPixelFormat(GL_RGB);
    //osgDB::writeImageFile(*startIm, "new.jpg");

    osg::ref_ptr<osgDB::ReaderWriter> writer = 
        osgDB::Registry::instance()->getReaderWriterForExtension("jpg");
        //osgDB::Registry::instance()->getReaderWriterForExtension("bmp");

    if( !writer.valid() )
        return -1;

    osg::ref_ptr<osgDB::ReaderWriter::Options> op = new 
osgDB::ReaderWriter::Options();
    op->setOptionString("JPEG_QUALITY 50");
    //op->setOptionString("PNG_COMPRESSION 9");


        std::stringstream ss;
    osgDB::ReaderWriter::WriteResult res = writer->writeImage(*startIm, ss, op);
        
        
        std::ofstream fout("new.jpg");
        fout.clear();
        fout << ss.str();
        fout.flush();
    return 0;
}



and i try it out on my own. I tried it out with multiple file formats. It works 
fine for bmp saving. When i try it for jpg or png it doesn't work. writeImage 
finishes with FILE_SAVED only if the readImageFile file is the same type as in 
writeImage, and even then the output image turns out scrambled and with 
switched rows and colors. In other cases the writeImage finishes with 
ERROR_IN_WRITING_FILE. Any help is appreciated.

Thank you!

Cheers,
Vedran

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=27254#27254





_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to