Ios 如何获取返回rgb、十六进制值的图像像素?网间网操作系统
我是ios新手,所以请温柔一点 我有一个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
图像视图
,它显示从照片库
中选择的图像
我想选择我选择的颜色,用它的
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用户发布的编辑建议。这个问题应该问瓦伦。