Ios 如何获取返回rgb、十六进制值的图像像素?网间网操作系统

Ios 如何获取返回rgb、十六进制值的图像像素?网间网操作系统,ios,iphone,objective-c,uicolor,color-picker,Ios,Iphone,Objective C,Uicolor,Color Picker,我是ios新手,所以请温柔一点 我有一个图像视图,它显示从照片库中选择的图像 我想选择我选择的颜色,用它的rgb和hex值触摸图像。我想你应该试试这个方法: - (UIColor *)colorAtPosition:(CGPoint)position { CGRect sourceRect = CGRectMake(position.x, position.y, 1.f, 1.f); CGImageRef imageRef = CGImageCreateWithImageInR

我是ios新手,所以请温柔一点

我有一个
图像视图
,它显示从
照片库
中选择的图像


我想选择我选择的颜色,用它的
rgb
hex
值触摸图像。我想你应该试试这个方法:

- (UIColor *)colorAtPosition:(CGPoint)position 
{
    CGRect sourceRect = CGRectMake(position.x, position.y, 1.f, 1.f);
    CGImageRef imageRef = CGImageCreateWithImageInRect(self.CGImage, sourceRect);

    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    unsigned char *buffer = malloc(4);
    CGBitmapInfo bitmapInfo = kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big;
    CGContextRef context = CGBitmapContextCreate(buffer, 1, 1, 8, 4, colorSpace, bitmapInfo);
    CGColorSpaceRelease(colorSpace);
    CGContextDrawImage(context, CGRectMake(0.f, 0.f, 1.f, 1.f), imageRef);
    CGImageRelease(imageRef);
    CGContextRelease(context);

    CGFloat r = buffer[0] / 255.f;
    CGFloat g = buffer[1] / 255.f;
    CGFloat b = buffer[2] / 255.f;
    CGFloat a = buffer[3] / 255.f;

   free(buffer);

   return [UIColor colorWithRed:r green:g blue:b alpha:a];
}
或者试试这个:


这是一个非常酷的方法。

你听起来对编程很陌生,这段时间,不仅仅是iOS。例如,“十六进制值”是什么意思?这只是一种表示数字的方法…我想在触摸时获得每个像素点的RGB和十六进制颜色值。十六进制值的十六进制只是一种表示数字的方法;换句话说,10是0x0a,并且不会以任何方式影响此问题的答案。@kroolik对于自定义图像无法正常工作。。。你查过了吗?@iosleener,我不是这篇文章的作者。我刚刚改进了另一个SO用户发布的编辑建议。这个问题应该问瓦伦。