2012-04-04 6 views
1

私はビットマップの特定の領域を色づけしようとします。後にそれを画面に表示します。 現在、私は次のアプローチを使用しています: ビットマップCGContextRefと2次元のビット配列を表しています。これによって、どのピクセルを色付けするかがわかります。その後、ループはこの配列を投げると、楕円を描く:IoS指定された色でココアを塗りつぶす

for(int i = 0; i < width; i++){ 
    for(int j = 0; j < height; j++){ 
     if(colormask[i][j] == 1){ 
      CGRect circleRect = CGRectMake(i, j, 1, 1); 
      CGContextSetRGBFillColor(bitmap, red, green, blue, 1.0); 
      CGContextFillEllipseInRect(bitmap, circleRect); 
     } 
    } 
} 

これは、問題を解決しますが、あまりにも遅い動作します。他のアイデアをご提供ください。 Quartzを使用したソリューションがあるかもしれませんか?

+0

色を付ける画像が分かりますか?簡単な画像にタグを付けるだけで、あなたが色付けしたい部分を教えてください。 – Aravindhan

+0

これは子供用の絵本のような白黒画像です。それから私はそれの特定のドメインに色付けしたいと思います。 – Robert

答えて

1

画像を着色するのにFlood fill Algorithmを使用すると、画像が非常に高速かつ効率的になります。 flood fillのObjective-cバージョンアルゴリズムはHereです。

+0

はい、私はすでにこのアルゴリズムを実装しています。私はあなたのリンクによってドメインの色付け方法を知っています - ビットマップデータの適切なバイトを次のように設定するだけです: 'code' int byteIndex =(bytesPerRow * y)+ x * bytesPerRow/width; rawData [byteIndex] =赤; rawData [byteIndex + 1] =青; rawData [byteIndex + 2] =緑; 'code' これは本当に速く動作します!だから私の問題は解決される。ありがとうございました。 :) – Robert

+0

ようこそ.............. :) – Aravindhan

+2

その実装の基本的な例をどこに見つけることができますか?プロジェクトに組み込むためのステップ・バイ・ステップのプロセスですか? –

関連する問題