cuốn sách gpt4 ai đã làm

iphone - 如何在 iPhone 上读取 RGB 像素数据

In lại Tác giả: Walker 123 更新时间:2023-11-28 20:39:13 27 4
mua khóa gpt4 Nike

我想知道如何在 iPhone 上扫描图像并分析每个像素的 RGB 值,从而最终确定整个图像的平均 RGB。如果有人能将我推向正确的方向,将不胜感激。我是图像分析的新手,不确定从哪里开始,或者 iOS 5 API 中是否包含类似的内容。

câu trả lời hay nhất

只需粘贴,我正在检测触摸颜色。

- (void) touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event {

if (self.view.hidden==YES) {
//color wheel is hidden, so don't handle this as a color wheel event.
[[self nextResponder] touchesEnded:touches withEvent:event];
trở lại;
}

UITouch* touch = [touches anyObject];
CGPoint point = [touch locationInView:self.view]; //where image was tapped
UIColor * lastColor = [self getPixelColorAtLocation:point];
NSLog(@"color %@",lastColor);
UIImageView *lbl=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
lbl.layer.cornerRadius=50;
[imageView addSubview:lbl];
lbl.backgroundColor=lastColor;
lbl.center=CGPointMake(stillImageFilter.center.x*320, (stillImageFilter.center.y*320)-125);
NSLog(@"stillImageCenter = %f,%f",stillImageFilter.center.x,stillImageFilter.center.y);}

- (UIColor*) getPixelColorAtLocation:(CGPoint)point {
UIColor* color = nil;
CGImageRef inImage = imageView.image.CGImage;

CGContextRef cgctx = [self createARGBBitmapContextFromImage:inImage];
if (cgctx == NULL) { return nil; /* error */ }

size_t w = CGImageGetWidth(inImage);
size_t h = CGImageGetHeight(inImage);
CGRect rect = {{0,0},{w,h}};


CGContextDrawImage(cgctx, rect, inImage);


unsigned char* data = CGBitmapContextGetData (cgctx);
if (data != NULL) {

int offset = 4*((w*round(point.y))+round(point.x));
int alpha = data[offset];
int red = data[offset+1];
int green = data[offset+2];
int blue = data[offset+3];
NSLog(@"offset: %i colors: RGB A %i %i %i %i",offset,red,green,blue,alpha);
color = [UIColor colorWithRed:(red/255.0f) green:(green/255.0f) blue:(blue/255.0f) alpha:(alpha/255.0f)];
}


CGContextRelease(cgctx);

if (data) { free(data); }

return color;

- (CGContextRef) createARGBBitmapContextFromImage:(CGImageRef) inImage {

CGContextRef context = NULL;
CGColorSpaceRef colorSpace;
void * bitmapData;
int bitmapByteCount;
int bitmapBytesPerRow;


size_t pixelsWide = CGImageGetWidth(inImage);
size_t pixelsHigh = CGImageGetHeight(inImage);


bitmapBytesPerRow = (pixelsWide * 4);
bitmapByteCount = (bitmapBytesPerRow * pixelsHigh);


colorSpace = CGColorSpaceCreateDeviceRGB();

if (colorSpace == NULL)
{
fprintf(stderr, "Error allocating color space\n");
return NULL;
}


bitmapData = malloc( bitmapByteCount );
if (bitmapData == NULL)
{
fprintf (stderr, "Memory not allocated!");
CGColorSpaceRelease( colorSpace );
return NULL;
}


context = CGBitmapContextCreate (bitmapData,
pixelsWide,
pixelsHigh,
8, // bits per component
bitmapBytesPerRow,
colorSpace,
kCGImageAlphaPremultipliedFirst);
if (context == NULL)
{
free (bitmapData);
fprintf (stderr, "Context not created!");
}


CGColorSpaceRelease( colorSpace );

return context;

关于iphone - 如何在 iPhone 上读取 RGB 像素数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9270923/

27 4 0
Walker 123
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress