2011-08-08 5 views
3

私のプロジェクトの目的:ユーザーは画面に触れることで画像の部分に色を変えることができます。この領域の色を変更する必要があります。Objective-C/iphone - ピクセルの色を変更しますか?

私の考えはたくさんあります。ビューに別のイメージ(動的に作成されたイメージ)を配置しますが、これらのアイデアは高価です。

これを行う方法()。

答えて

5

Core Graphicsを使用できます。プロジェクトにQuartzCoreフレームワークを追加してください。

UInt8* data = (UInt8*)CGBitmapContextGetData(bmContext); 

は、次にピクセル操作を実行します。

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 
CGContextRef bmContext = CGBitmapContextCreate(NULL, width, height, 8,bytesPerRow, colorSpace, kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedFirst); 
CGColorSpaceRelease(colorSpace); 
CGContextDrawImage(bmContext, (CGRect){.origin.x = 0.0f, .origin.y = 0.0f, .size.width = originalWidth, .size.height = originalHeight}, cgImage); 

が、あなたは基礎となるピクセルへの参照をつかむことができます。

これを行うための基本的な方法は、ビットマップコンテキストであなたの画像をレンダリングすることです:

const size_t bitmapByteCount = bytesPerRow * originalHeight; 
for (size_t i = 0; i < bitmapByteCount; i += 4) 
{ 
    UInt8 a = data[i]; 
    UInt8 r = data[i + 1]; 
    UInt8 g = data[i + 2]; 
    UInt8 b = data[i + 3]; 

    // Do pixel operation here 

    data[i] = (UInt8)newAlpha 
    data[i + 1] = (UInt8)newRed; 
    data[i + 2] = (UInt8)newGreen; 
    data[i + 3] = (UInt8)newBlue; 
} 

最後に、コンテキストから新しい画像を取得してください:

CGImageRef newImage = CGBitmapContextCreateImage(bmContext); 
+0

もっと明確にすることができます。 coz私はこの種のプロジェクト(グラフィックス)で動作しませんでした。また、コアグラフィックスを新しくしました。コードを試しましたが、残念ながら動作しませんでした。 –

+0

https:// githubを見てください。 com/Nyx0uf/NYXImagesUtilities – Nyx0uf

+0

あなたのサポートのために....私は今ピクセルを変更することができます.. .. :) –

関連する問題