나는 내가 RGBI를 설정하여 일부 픽셀 색상을 변경하고 싶습니다 UIImage 있습니다. 변경해야하는 모든 픽셀에 대한 CGPoint가 있습니다. RGBA 값을 설정하여 색상을 어떻게 바꿀 수 있습니까?컬러링 CGPoint UIImage의
UIImage 픽셀의 색상을 변경할 수 없다면 이미지가 포함 된 UIImageView를 그려도 괜찮습니다. 그러나 여러 번해볼 예정이므로 잘 수행해야합니다.
어떻게하면됩니까?
편집 : 나는 내 문제에 대한 해결책을 알아 냈
. 이 색상 CGPoint 레드 :
-(void)pixelate:(CGPoint)point
{
CGImageRef inImage = self.drawImage.image.CGImage;
CGContextRef cgctx = [self createARGBBitmapContextFromImage:inImage];
if (cgctx == nil) { NSAssert(NO,@"Context shouldn't be nil!"); }
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 != nil)
{
int offset = 4*((w*round(point.y))+round(point.x));
data[offset] = 255; //alpha
data[offset+1] = 255; //red
data[offset+2] = 0; //green
data[offset+3] = 0; //blue
}
CGImageRef img = CGBitmapContextCreateImage(cgctx);
UIGraphicsEndImageContext();
CGContextRelease(cgctx);
if (data) { free(data); }
self.drawImage.image = [UIImage imageWithCGImage:img];
}
드로잉 성능은 액세스 패턴에 크게 의존합니다. 픽셀을 한 번에 하나씩 설정하는 것은 일반적으로 그리 효율적이지 않습니다. 당신이 높은 수준에서 무엇을하고 있는지를 아는 것이 도움이 될 것입니다. –
나는 페인팅 프로그램에서 "양동이"도구를 만들려고합니다. 나는 픽셀 단위로 색칠하는 재귀 적 방법이 그것을 할 것이라고 생각했다. 나는 더 나은 해결책에 대해 듣게되어 기쁩니다. –