例如,假设我想用屏幕坐标(100,200)检测像素的颜色.有没有办法做到这一点?
编辑 - 我现在不担心视网膜显示问题.
我试图从CGImage访问像素数据.我希望能够以整数形式访问RGB值.我想我差不多有这个代码:
UIImage* theImage = [UIImage imageNamed:@"rgb.png"];
CGImageRef cgImageRef = CGImageRetain(theImage.CGImage);
CFDataRef* imageData = CGDataProviderCopyData(CGImageGetDataProvider(cgImageRef));
NSLog(@"the data = %@", imageData);
Run Code Online (Sandbox Code Playgroud)
然后记录:
data = <010002fe fffdff02 0200fe04 0003fc>
图像是5x1 png,按顺序包含黑色,白色,红色,绿色和蓝色像素.
我真的不明白我在这看什么.我如何获得RGB值的数组,或类似的东西,以便我可以使用它们.
谢谢,Rich
可能重复:
使用相机检测心率
我正在研究在iOS中检测脉搏率.我做了一些搜索,现在我能够使用能够读取心跳的外部蓝牙设备读心跳.但现在我对使用iPhone相机检测脉冲感到好奇.我想了解它是如何做到的?这背后的实际理论是什么?任何人都有这个背后的想法吗?
根据我的搜索,我发现我需要在视频模式下使用相机.我需要比较该视频中的每个帧的颜色变化.当我们的心脏将血液泵入体内时,每个泵都会改变颜色.那么我将如何使用相机获得颜色变化,还是有其他方法可以做到这一点?
根据对上一个问题的回答,我在UIImageView上创建了一个用于提取像素数据的类别.这在模拟器中工作正常,但在部署到设备时则不行.我应该说并不总是 - 奇怪的是,如果point.x == point.y,它会获取正确的像素颜色; 否则,它给出了该行另一侧像素的像素数据,就像镜像一样.(因此,点击图像右下角的像素会为我提供左上角相应像素的像素数据,但点击左下角的像素会返回正确的像素颜色).触摸坐标(CGPoint)是正确的.
我究竟做错了什么?
这是我的代码:
@interface UIImageView (PixelColor)
- (UIColor*)getRGBPixelColorAtPoint:(CGPoint)point;
@end
@implementation UIImageView (PixelColor)
- (UIColor*)getRGBPixelColorAtPoint:(CGPoint)point
{
UIColor* color = nil;
CGImageRef cgImage = [self.image CGImage];
size_t width = CGImageGetWidth(cgImage);
size_t height = CGImageGetHeight(cgImage);
NSUInteger x = (NSUInteger)floor(point.x);
NSUInteger y = height - (NSUInteger)floor(point.y);
if ((x < width) && (y < height))
{
CGDataProviderRef provider = CGImageGetDataProvider(cgImage);
CFDataRef bitmapData = CGDataProviderCopyData(provider);
const UInt8* data = CFDataGetBytePtr(bitmapData);
size_t offset = ((width * y) + x) …Run Code Online (Sandbox Code Playgroud) 我有一个UIImage显示在UIImageView.我还有另一张图像位于UIImageView第一张图像上方.我希望能够仅在第一个图像的边框内拖动第二个图像.为了让我的目标更清晰一点,请看这张图片:http:
//img689.imageshack.us/img689/6136/56308823.png.
绿色引脚应该是可拖动的,但不应该将引脚拖动到蓝色(地图外部).此刻引脚是可拖动的,但我不知道如何检查引脚是否在地图之外.
编辑:我在我的UIImageView子类中使用此方法的可拖动引脚:
- (UIColor *)colorAtPosition:(CGPoint)position {
CGRect sourceRect = CGRectMake(position.x, position.y, 1.f, 1.f);
CGImageRef imageRef = CGImageCreateWithImageInRect([[MapViewController sharedMapViewController]getImage].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] …Run Code Online (Sandbox Code Playgroud) 大家好,我的 iOS 应用需要帮助。如何在我点击的位置获取图像的背景颜色(我在 UIImageView 中插入)。我创建了一个点击手势识别器,但我不知道如何读取我点击的背景颜色。