[gtkmm] Higher performance and saving image options



Hi Friends,
    I have to manipulate ( rotate ) a tiff file having 5600 x 6600  pixels.
For that I created a pixbuf from file

    Glib::RefPtr<Gdk::Pixbuf> m_ppixBuf;  
    m_ppixBuf = Gdk::Pixbuf::create_from_file(filename );

 int lHeight = m_ppixBuf->get_height();
 int lWidth = m_ppixBuf->get_width();
 int lRotatedRowStride = m_ppixBuf->get_rowstride();

Then collected data in a local variable,
    gchar* pixdata = m_ppixBuf->get_pixels();

Allocating equivalent memory to one temporary variable
    gchar* tmpdata = (char *) malloc( lHeight * lWidth * lNo_of_channels);

Then coying pixels one by one from source to target using memcpy function.

// case 90 degree :
          
        for(j = 0, k = (lHeight-1); j < lHeight; j++, k--)
        {                 
            for(i = 0; i < lWidth; i++)
            {
                memcpy(&tmpmap[i * lRotatedRowStride + k *
iNo_of_Channel], &bitmap[j * lRowstride + i * iNo_of_Channel],
iNo_of_Channel);     
            }      
        }

This code works fine , but takes lot of time to rotate large image.

Is there any other way to make this operation faster?

Also I want to save modified pixbuf in "tiff" file, but GDK library
allows me to save only in PNG and JPEG format.
How will I save it in tiff format?

If anyone knows please help me.

Thanks,
Ramachandra
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]