Re: alpha value from NSBitmapImageRep
Re: alpha value from NSBitmapImageRep
- Subject: Re: alpha value from NSBitmapImageRep
- From: "Ken Ferry" <email@hidden>
- Date: Tue, 28 Oct 2008 03:38:52 -0700
Hi chaitanya,
Actually, much better than accessing image data is getting the image
drawing machinery to do the work for you. It will get the various
image data formats right, and you're providing high level information
("do the same thing to the entire image") that may enable
optimizations. Accessing image data directly is quite error prone, as
it turns out. It's easy to accidentally hardwire assumptions about
bitmap format that do not hold when the OS changes.
In this case, you want would want to make a CGBitmapContextRef with
kCGImageAlphaOnly. This will let you produce a buffer full of your
alpha values. Creating and drawing in the context looks something
like this (typed in Mail):
CGContextRef alphaBitmapCtx =
CGBitmapContextCreate(myDestinationBuffer, width, height,
8/*bitsPerComponent*/, bytesPerRow, NULL/*colorSpace*/,
kCGImageAlphaOnly);
[NSGraphicsContext saveGraphicsState];
[NSGraphicsContext setCurrentContext:[NSGraphicsContext
graphicsContextWithGraphicsPort:alphaBitmapCtx flipped:NO]];
[image drawInRect:NSMakeRect(0,0,width,height) fromRect:NSZeroRect
operation:NSCompositeCopy fraction:1.0];
[NSGraphicsContext restoreGraphicsState];
Following this code, myDestinationBuffer has all the alpha data from the image.
-Ken
Cocoa Frameworks
On Tue, Oct 28, 2008 at 2:59 AM, chaitanya pandit
<email@hidden> wrote:
> I want to compute the alpha value of each pixel of an image.
> What i am doing right now is i create a NSBitmapImageRep from the image and
> use colorAtX: y: to get the alpha value form the color at that pixel.
> So i need to do this for each and every pixel in the image.
> I was just going through the WWDC 2008's "916-Getting started with
> Instruments" session where they worked on a sample image enhancement app.
> They had a similar case where they had to compute the color at every pixel.
>
> The author says the process can be optimized if we first gather the
> imageRep's data and then access the color values directly from that data
>
> So heres how i get the data:
> unsigned char *data = [mImageRep bitmapData] , *pixel;
>
> Now how do i access the pixel information from over here? any idea?
> I'd be glad if someone can help me optimize this.
>
> _______________________________________________
>
> Cocoa-dev mailing list (email@hidden)
>
> 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:
>
> This email sent to email@hidden
>
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden