next up previous contents
Next: Drawing Border Up: Image Processing using GTK. Previous: Image flipping   Contents

Image Inversion

Take the first row a swap it with the last row. Do this for the first height/2 rows then we have a inverted swapped image.

Figure: Kathakali, Image inverted
Image kathakali_pictureinvert

#define swap(x,y) {int temp;temp=x;x=y;y=temp;}

void invert_picture(GdkPixbuf *pb) //ulta 180* degree turn
{
  int ht,wt;
  int i=0,j=0;
  int rowstride=0;
  
  gchar *pixel;
  ht=gdk_pixbuf_get_height(pb);
  wt=gdk_pixbuf_get_width(pb);
  pixel=gdk_pixbuf_get_pixels(pb);
  rowstride=gdk_pixbuf_get_rowstride(pb);


  for(i=0;i<ht/2;i++)           //half the height!
    for(j=0;j<rowstride;j+=3)
      {	
	swap(pixel[i*rowstride+j+0],pixel[(ht-i)*rowstride+j+0]);
	swap(pixel[i*rowstride+j+1],pixel[(ht-i)*rowstride+j+1]);
	swap(pixel[i*rowstride+j+2],pixel[(ht-i)*rowstride+j+2]);	
      }
  return;
}



Muthiah 2004-06-04