Re: RGBA UIColor Information At CGPoint?
Re: RGBA UIColor Information At CGPoint?
- Subject: Re: RGBA UIColor Information At CGPoint?
- From: Waqar Malik <email@hidden>
- Date: Sun, 29 Nov 2009 17:26:56 -0800
Yes, that is then number of pixels, but do you really need that, as the width and height would be the same, check those values as well.
--Waqar
On Nov 29, 2009, at 5:13 PM, Chunk 1978 wrote:
> 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