我正在尝试实现一个应用程序,其中我将彩色图像显示为自定义View的backgroundColor。用户触摸图像上的特定区域(显示为视图的背景颜色),触摸所在的像素应该检索出现并使用UIColor创建相应的颜色。
我有一个代码,以便从ImageView访问特定像素,如下所示:
CFDataRef CopyImagePixels(CGImageRef inImage)
{
return CGDataProviderCopyData(CGImageGetDataProvider(inImage));
}
从上面的代码中,我得到了图像的原始像素数据。然后我创建了一个自定义UIView,并将特定的图像设置为自定义视图的背景颜色。然后我使用方法“handleTouchesBegan”捕获了Touches。然后我从参数中得到了x和y坐标。代码如下:
获取像素值:
NSData *rawData = (NSData *)CGDataProviderCopyData(CGImageGetDataProvider(image1.CGImage));
uint *x = malloc (rawData.length);
NSLog(@"Length of raw data :%d", rawData.length);
[rawData getBytes: x];
触摸touchesBegan方法:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
for (UITouch *touch in touches)
{
// Sends to the dispatch method, which will make sure the appropriate subview is acted upon
CGPoint pt = [touch locationInView:upperImage];
indexValue = pt.x * pt.y;
int alpha = x[indexValue];
int red = x[indexValue + 1];
int green = x[indexValue + 2];
int blue = x[indexValue + 3];
self.view.backgroundColor = [ UIColor colorWithRed:red green:green blue:blue alpha:alpha];
// TODO : compare the values with raw image Bytes ...
}
}
问题是我无法创建上面的颜色..任何帮助将不胜感激...
最诚挚的问候,
Mohammed Sadiq。
答案 0 :(得分:0)
alpha值可能位于开头或结尾,具体取决于位图的格式。 RGB值也可以与α值预乘。您可以使用CGImageGetBitmapInfo获取有关位图格式的更多信息。
打印RGB值并查看它们是否正确。
答案 1 :(得分:0)
听起来像this question类似的问题。