私は、RGBAを設定することによっていくつかのピクセルカラーを変更したいUIImageを持っています。私は変更する必要があるすべてのピクセルに対してCGPointsを持っています。 RGBA値を設定して色を変更するにはどうすればよいですか?カラーリングUII画像のCGPoint
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];
}
描画パフォーマンスは、アクセスパターンに大きく依存します。ピクセルを一度に1つずつ設定することは、一般的にあまり効率的ではありません。あなたが何を高レベルでやっているのかを知るのに役立ちます。 –
私はペイントプログラムのために "バケット"ツールを作成しようとしています。私はピクセル単位で色分けする再帰的な方法がそれをすると考えました。私はより良い解決策について聞いてうれしいです:) –