Re: RGBA UIColor Information At CGPoint?
Re: RGBA UIColor Information At CGPoint?
- Subject: Re: RGBA UIColor Information At CGPoint?
- From: Chunk 1978 <email@hidden>
- Date: Sun, 29 Nov 2009 20:13:38 -0500
humm... while i understand most of this method, i don't understand
what is passed as "count"? i understand that this will convert a
UIImage into a CGImage, and store each pixel of the image into an
array, which are indexed by "xx" and "yy" variables. but what is
count? is count the total number of pixels of the passed image?
––––––––––
+ (NSArray*)getRGBAsFromImage:(UIImage*)image atX:(int)xx andY:(int)yy
count:(int)count
{
NSMutableArray *result = [NSMutableArray arrayWithCapacity:count];
// First get the image into your data buffer
CGImageRef imageRef = [image CGImage];
NSUInteger width = CGImageGetWidth(imageRef);
NSUInteger height = CGImageGetHeight(imageRef);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
unsigned char *rawData = malloc(height * width * 4);
NSUInteger bytesPerPixel = 4;
NSUInteger bytesPerRow = bytesPerPixel * width;
NSUInteger bitsPerComponent = 8;
CGContextRef context = CGBitmapContextCreate(rawData, width, height,
bitsPerComponent, bytesPerRow, colorSpace,
kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGColorSpaceRelease(colorSpace);
CGContextDrawImage(context, CGRectMake(0, 0, width, height), imageRef);
CGContextRelease(context);
// Now your rawData contains the image data in the RGBA8888 pixel format.
int byteIndex = (bytesPerRow * yy) + xx * bytesPerPixel;
for (int ii = 0 ; ii < count ; ++ii)
{
CGFloat red = (rawData[byteIndex] * 1.0) / 255.0;
CGFloat green = (rawData[byteIndex + 1] * 1.0) / 255.0;
CGFloat blue = (rawData[byteIndex + 2] * 1.0) / 255.0;
CGFloat alpha = (rawData[byteIndex + 3] * 1.0) / 255.0;
byteIndex += 4;
UIColor *acolor = [UIColor colorWithRed:red green:green
blue:blue alpha:alpha];
[result addObject:acolor];
}
free(rawData);
return result;
}
––––––––––
so could if i had an image of a tree called "tree.png" that's 50
pixels in width, and 100 pixels in height, and i want the RGBA color
data of the second last pixel of the last row of pixels, would i call
it like this:
––––––––––
[self getRGBAsFromImage:[UIImage imageNamed:@"tree.png"] atX:49
andY:100 count:(50*100)];
––––––––––
On Sun, Nov 29, 2009 at 1:28 PM, Chunk 1978 <email@hidden> wrote:
>
> precisely! thanks for this.
>
> On Sun, Nov 29, 2009 at 1:24 PM, Waqar Malik <email@hidden> wrote:
>>
>> I think this is what you are looking for.
>>
>> <http://stackoverflow.com/questions/448125/how-to-get-pixel-data-from-a-uiimage-cocoa-touch-or-cgimage-core-graphics>
>>
>> On Nov 29, 2009, at 10:17 AM, Chunk 1978 wrote:
>>
>> > what method, or combination of methods can i use to receive color
>> > information of a CGPoint. i can get basic coordinates of a view using
>> > UITouch's locationInView method, but i'd like to get an RGBA color
>> > information output. what methods or example code from apple should i
>> > research?
>> > _______________________________________________
>> >
>> > 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