gpt4 book ai didi

cocoa - NSImage w/BitmapImageRep -> CIImage 反转颜色 -> NSImage w/BitmapImageRep,色彩空间问题

转载 作者:行者123 更新时间:2023-12-03 17:19:33 26 4
gpt4 key购买 nike

所以我有一个 NSImage *startingImage
它由带有灰色色彩空间的 NSBitmapImageRep 表示

我需要反转它的颜色,因此我将其转换为 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")];

如果我此时查看outputImage,它正是我所期望的,除了颜色反转之外,是相同的图像。

然后我将其转换回 NSImage ,如下所示:

   NSBitmapImageRep *finalImageRep = [[NSBitmapImageRep alloc] initWithCIImage:outputImage];
NSImage *finalImage = [[NSImage alloc] initWithSize:[finalImageRep size]];
[finalImage finalImageRep];

这是我的问题...我的原始 NSImage 具有灰色色彩空间,每像素 8 位。

<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>" )>

但是,在我转换所有内容并注销图像后,这就是我所拥有的

<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 是不可变的,当我尝试 setColorSpaceNamesetAlpha 时,图像最终只是是一个黑匣子。

是否缺少一些东西,以便我可以将我的 NSImage 转换为 CIImage,反转黑白,然后转换回 NSImage

最佳答案

也许你可以替换最后的色彩空间:

NSBitmapImageRep* fixedRep = [finalImageRep bitmapImageRepByConvertingToColorSpace: [startingImageRep colorSpace]
renderingIntent: NSColorRenderingIntentDefault];

关于cocoa - NSImage w/BitmapImageRep -> CIImage 反转颜色 -> NSImage w/BitmapImageRep,色彩空间问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38337783/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com