gpt4 book ai didi

cocoa - 清除 NSImage 的 Alpha channel

转载 作者:行者123 更新时间:2023-12-03 16:51:59 24 4
gpt4 key购买 nike

可以通过分配每像素 32 位的临时位图来完成然后用 for 循环清除 alpha 分量最后再次将其转回 NSImage。

我怀疑可以使用聪明的方法以更简单的方式完成NSColor 和 NSCompositingOperation 的组合。或者也许是图像需要使用drawAtPoint与其自身合成。

我的代码如下所示。

NSImage* img = some image with RGB and Alpha;
NSRect rect = some rect inside the image;
[img lockFocus];
[[NSColor clearColor] set];
NSRectFillUsingOperation(rect, NSCompositeXOR);
[img unlockFocus];

注意:将 alpha channel 设置为 1 可以通过以下方式完成使用带有 NSCompositePlusLighter 的 blackColor。

清除 Alpha channel 的秘诀是什么?

最佳答案

它不会很快,但也能工作:

NSImage *newImage = [[NSImage alloc] initWithSize:[srcImage size]];
[newImage lockFocus];
[[NSColor whiteColor] set];
NSRectFill(NSMakeRect(0,0,[newImage size].width, [newImage size].height));
[srcImage compositeToPoint:NSZeroPoint operation:NSCompositeCopy];
[newImage unlockFocus];

关于cocoa - 清除 NSImage 的 Alpha channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1562959/

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