I'm using... vImage_Error err = vImageContrastStretch_Planar8 (&src, &dest, flags ); and getting a scrambled image from the code? Each pixel returned is at the right height but offset left 3 pixels. Anyone wanting to you to look the images email me.
- (NSImage*)vImageContrastStretch:(NSImage*)anImage{ NSBitmapImageRep *anImageRep = [[NSBitmapImageRep alloc] initWithData:[anImage TIFFRepresentation]]; unsigned char *inBytes = [anImageRep bitmapData]; NSSize imageSize = [anImage size]; UInt32 imageWidth = imageSize.width; UInt32 imageHeight = imageSize.height; NSImage *newImage = [[[NSImage alloc] initWithSize:imageSize]autorelease]; NSBitmapImageRep *newImageRep; UInt32 samplesPerPixel = [anImageRepsamplesPerPixel]; BOOL hasAlpha; if (samplesPerPixel==2 || samplesPerPixel==4) { // Gray+alpha or RGBA? hasAlpha = YES; } else { hasAlpha = NO; } NSString *colorSpaceName = nil; if (samplesPerPixel==1 || samplesPerPixel==2) { // Gray or Gray+alpha? colorSpaceName = NSCalibratedWhiteColorSpace; } else if (samplesPerPixel==3 || samplesPerPixel==4) { // RGB or RGBA? colorSpaceName = NSCalibratedRGBColorSpace; } else {NSLog(@"I can't handle a colorspace with %d samples per pixel",samplesPerPixel); return nil;} newImageRep = [[[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:imageWidth pixelsHigh:imageHeight bitsPerSample:8 samplesPerPixel:samplesPerPixel hasAlpha:hasAlpha isPlanar:NO colorSpaceName:colorSpaceName bytesPerRow:0 bitsPerPixel:0] autorelease]; unsigned char *outBytes = [newImageRep bitmapData]; long numPixels = imageWidth * imageHeight; unsigned char *workBuffer1 = malloc(numPixels*sizeof(char)); unsigned char *workBuffer2 = malloc(numPixels*sizeof(char)); if (workBuffer1==NULL || workBuffer2==NULL) {NSLog(@"Can't allocate memory for image "); return nil;} vImage_Flags flags = 1; int sampleIx; for (sampleIx=0; sampleIx<samplesPerPixel; sampleIx++) { int ix; for (ix=0; ix<numPixels; ix++) *(workBuffer1+ix) = *(inBytes + ix*samplesPerPixel + sampleIx); const vImage_Buffer src = { workBuffer1, imageHeight, imageWidth, imageWidth*sizeof(char) }; const vImage_Buffer dest = { workBuffer2, imageHeight, imageWidth, imageWidth*sizeof(char) }; vImage_Error err = vImageContrastStretch_Planar8 (&src, &dest, flags ); if (err!=kvImageNoError) {return nil;} for (ix=0; ix<numPixels; ix++) *(outBytes + ix*samplesPerPixel + sampleIx) = *(workBuffer2+ix); } free(workBuffer1); free(workBuffer2); [newImage addRepresentation:newImageRep]; [anImageRep release]; return newImage; } _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com