だから、私は上の色を反転させる必要があることは、グレー色空間NSImageでは - > CIImage色を反転させる - BitmapImageRep/W> NSImageでは、色空間の問題
でNSBitmapImageRep
で表されるNSImage *startingImage
を持っています私はこの時点でoutputImage
を表示すると、それは、私がCIImage
CIImage *startingCIImage = [[CIImage alloc] initWithBitmapImageRep:(NSBitmapImageRep*)[startingImage representations][0]];
CIFilter *invertColorFilter = [CIFilter filterWithName:NEVER_TRANSLATE(@"CIColorInvert")];
[invertColorFilter setValue:startingCIImage forKey:NEVER_TRANSLATE(@"inputImage")];
CIImage *outputImage = [invertColorFilter valueForKey:NEVER_TRANSLATE(@"outputImage")];
に変換し、それは私が反転色を除いて、同じ画像を期待して正確に何です。
私はそのようにようにバックNSImage
に変換:
NSBitmapImageRep *finalImageRep = [[NSBitmapImageRep alloc] initWithCIImage:outputImage];
NSImage *finalImage = [[NSImage alloc] initWithSize:[finalImageRep size]];
[finalImage finalImageRep];
ここに私の問題です...私の元NSImage
はグレーの色空間を持っており、ピクセルあたり8ビット。
<NSImage 0x61800127e540 Size={500, 440} Reps=(
"NSBitmapImageRep 0x6080000b8cc0 Size={500, 440} ColorSpace=ASUS PB278 colorspace BPS=8 BPP=32 Pixels=500x440 Alpha=YES Planar=NO
Format=0 CurrentBacking=<CGImageRef: 0x6180001a3f00>")>
そして、あなたが知っているかもしれないとして持っているもので、NSBitmapImageRep
が不変であることを意味する
<NSImage 0x610000071440 Size={500, 440} Reps=(
"NSBitmapImageRep 0x6100002a1800 Size={500, 440} ColorSpace=Device Gray colorspace BPS=8 BPP=8 Pixels=500x440 Alpha=NO Planar=NO Format=0
CurrentBacking=<CGImageRef: 0x6100001ab0c0>")>
、と私はsetColorSpaceName
を試してみてくださいまたはsetAlpha
の場合、画像はブラックボックスにすぎません。
NSImage
をCIImage
に変換して白黒を反転してからNSImage
に変換することができますか?
'NSBitmapImageRep'の' initWithCIImage'は、現在のグラフィックスコンテキストを使用して画像をレンダリングします。 – Willeke
CGContextRef?塗りつぶしやストロークの色空間しか設定できません。設定しようとすると、NSImageでは何も変わりません –
私は画像のエキスパートではありません。 'initWithCIImage'のドキュメントを読むことをお勧めします。 – Willeke