如何获取返回RGB和十六进制值的图像像素?iOS

3

我是iOS的新手,请温柔一点...

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

我想要选择颜色,通过触摸图像来获取其RGBHex值。


你听起来对编程很新,不仅是iOS方面。比如说,“十六进制值”是什么意思?那只是表示一个数字的一种方式而已…… - trojanfoe
当我触摸时,我想获取每个像素点的RGB和十六进制颜色值。 - iOS Hero
十六进制值的十六进制 - iOS Hero
十六进制只是表示一个数字的方法;换句话说,10就是0x0a,不会以任何方式影响这个问题的答案。 - trojanfoe
1个回答

0
我认为你应该尝试这个方法:
- (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];
}

或者试试这个:

http://www.markj.net/iphone-uiimage-pixel-color/

这是一个相当不错的方法。


@kroolik,http://www.markj.net/iphone-uiimage-pixel-color/ 对于自定义图像无法正常工作...你有检查过吗? - Saad Chaudhry
@iosLearner,我不是这篇文章的作者。我只是改进了另一个SO用户发布的编辑建议。这个问题应该问Varun。 - Maciej Gol

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接