5

私は持っていNSImageます。NSColorあるxとyのピクセルのを読みたいと思います。Xcodeにはメソッドがあるように見えますcolorAtX:y:NSImage、これにより、NSImageにそのようなメソッドがないというクラッシュが発生します。を作成して同じメソッドを呼び出す例を見てNSBitmapImageRepきましたが、NSImageをに正常に変換できませんでしたNSBitmapImageRep。上のピクセルはNSBitmapImageRep何らかの理由で異なります。

これを行う簡単な方法が必要です。これほど複雑にすることはできません。

4

2 に答える 2

11

コードを見ずに、何が問題になっているのかを知ることは困難です。

NSBitmapImageRepメソッドを使用して画像を描画し、画像initWithData:のを渡すことができTIFFRepresentationます。

次に、メソッドを使用してピクセル値を取得できますcolorAtX:y:。これは、のメソッドであり、次のメソッドでNSBitmapImageRepはありませんNSImage

NSBitmapImageRep* imageRep = [[NSBitmapImageRep alloc] initWithData:[yourImage TIFFRepresentation]];
NSSize imageSize = [yourImage size];
CGFloat y = imageSize.height - 100.0;
NSColor* color = [imageRep colorAtX:100.0 y:y];
[imageRep release];

このメソッドは画像の左上から始まる座標系を使用するのに対し、座標系は左下から始まるyため、値を調整する必要があることに注意してください。colorAtX:yNSImage

または、ピクセルが画面に表示されている場合は、このNSReadPixel()関数を使用して、現在の座標系のピクセルの色を取得できます。

于 2012-03-16T01:18:53.807 に答える
1

の関数colorAtXNSBitmapImageRep、デバイスの色空間を使用していないようです。これにより、実際に表示される色値とわずかに異なる色の値が生じる可能性があります。次のコードを使用して、現在のデバイスの色空間で正しい色を取得します。

[yourImage lockFocus]; // yourImage is just your NSImage variable
NSColor *pixelColor = NSReadPixel(NSMakePoint(1, 1)); // Or another point
[yourImage unlockFocus];
于 2018-01-23T11:15:43.143 に答える