Re: Scaling an image and processing the scaled image (Magick++)

"John Wood" <[email protected]>
Newsgroups gmane.comp.video.image-magick.devel
Message-ID <[email protected]>
2006/12/7, [email protected] <[email protected]>:
> > Ok, no problem, attached is a small sample program which illustrates my problem.
>
> Send the program directly to us.  The mailling list does not permit attachments.
>

Thanks for the speedy replys.

Here is some code, I run Ubuntu 6.10 and compile with g++ `sdl-config
--cflags --libs` `Magick++-config --cppflags --cxxflags --ldflags
--libs` magicksample.cpp -o magicksample

Contents of magicksample.cpp

#include <iostream>

#include "Magick++.h"
#include "SDL.h"

using namespace std;
using namespace Magick;

void display(Image &image)
{		
	unsigned int width, height;
	
	// Get width and height of image.	
	width = image.columns();
	height = image.rows();
	
	// Initialize SDL.
	SDL_Init(SDL_INIT_VIDEO);	

	// Create SDL_Surface to draw image onto.
	SDL_Surface *surface;
	
	surface = SDL_SetVideoMode(width, height, 32, SDL_HWSURFACE);	

	// Get pointer to pixels of image.
	const PixelPacket *imagepixels = image.getConstPixels(0, 0, width, height);
	
	// Get pointer to pixels of surface.
	Uint32 *surfacepixels = (Uint32 *)surface->pixels;
	
	// Copy image pixels to surface.
	Uint32 color;

    	SDL_LockSurface(surface);

	for (int row = 0; row < surface->h; row++) {
		for(int column = 0; column < surface->w; column++) {    		
			color = SDL_MapRGB(surface->format,
							   imagepixels->red,
							   imagepixels->green,
							   imagepixels->blue);
    		
			*surfacepixels = color;
    		
			// Increment pointers.
			surfacepixels++;
			imagepixels++;
		}
	}

	SDL_UnlockSurface(surface);

	// Update surface.
	SDL_UpdateRect(surface, 0, 0, surface->w, surface->h);

	SDL_Delay(5000);
    	
	return;
}

int main(int argc, char **argv)
{	
	// Initialize ImageMagick install location for Windows
  	InitializeMagick(*argv);

	Image image;

	try {
		// Read file into image object.
		image.read( "logo:" );

		// Display image for 5 seconds.
		display(image);
		
		// Set image modifiable.
		image.modifyImage();
		
		// Scale image to smaller size.
		image.scale( "50x50%" );

		// Display scaled image for 5 seconds.
		display(image);
	}
	catch( Exception &error_ )
	{
		cout << "Caught exception: " << error_.what() << endl;
		return 1;
	}
	
	return 0;
}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.