Converting a PicHandle to format for use with imageData

Trevor DeVore lists at mangomultimedia.com
Tue Dec 30 13:51:10 EST 2003


On Dec 29, 2003, at 3:29 PM, Thierry Arbellot wrote:
> So, the code should look like this:

Okay, I've implemented your code example and am able to get a picture 
into an image object in Revolution.  The pictures I grab from stills or 
movies don't look right however.  You can see what the image should 
look like here 
<http://www.mangomultimedia.com/developer/revolution/good_image.jpg> 
and what the image I am getting in Revolution looks like here 
<http://www.mangomultimedia.com/developer/revolution/bad_image.jpg>.

I have tried various methods of putting an image into the GWorld (going 
to a certain time in the movie and putting that into the GWorld as well 
as using the QT API call GetMoviePict/GetMoviePosterPic) with the same 
result.

Any ideas on what might be happening?


Here is the code:

// Get movie dimensions and create offscreen GWorld
GetMovieBox(mv, &movieFrame);
NewGWorld(&theGWorld, k32ARGBPixelFormat, &movieFrame, NULL, NULL, 
(GWorldFlags)0);

SetGWorld(theGWorld, NULL);

// get image from movie and put into GWorld
thePicHandle = GetMoviePosterPict (mv);
EraseRect(&movieFrame);
DrawPicture(thePicHandle, &movieFrame);

LockPixels(GetPortPixMap(theGWorld));
thePixMap = *(GetPortPixMap(theGWorld));

if (thePixMap->baseAddr != NULL) {
	rdata.sptr = thePixMap->baseAddr;
	rdata.length = movieFrame.right * movieFrame.bottom * 4;
	
	SetVariableEx(args[0], "", &rdata, &retvalue);
	
	retstr = (char *)malloc(8);
	sprintf(retstr, "%s", "Success");
} else {
	retstr = (char *)malloc(8);
	sprintf(retstr, "%s", "Failure");
}

UnlockPixels(GetPortPixMap(theGWorld));
DisposeGWorld(theGWorld);
DisposeHandle((Handle)thePicHandle);
CloseMovieFile(refnum);
DisposeMovie(mv);

-- 
Trevor DeVore
Blue Mango Multimedia
trevor at mangomultimedia.com



More information about the use-livecode mailing list