我试图使一些颜色的图像透明。下面是我的照片。
让我说,我想从图像中删除粗体红色,并使其透明。我正在查看我的图像为PDF,因此透明的颜色将是如果背景将与粉红色在侧面。我正在使用来自苹果文档的代码,我用以下方式稍微修改了这些代码:
// inside 3rd loop
let hue = getHue(red: red, green: green, blue: blue)
let wantedHue = getHue(red: myPixel.redComponent, green: myPixel.greenComponent, blue: myPixel.blueComponent)
let isHueInRange = hue >= wantedHue - 0.1 && hue <= wantedHue + 0.1
let alpha:CGFloat = isHueInRange ? 0 : 1这是我得到的结果。正如你所看到的,仍然有一些颜色和背景不是完全透明的。我做了这些修改,因为我需要能够动态删除图像的背景颜色(我的图像中不会有任何人或其他复杂的对象。它很可能是文本和一些矩形。不混色。只保留颜色。)
所以我要做的是找到图像的第一个像素并得到它的颜色。当我有颜色,我得到它的色调,但我手动设置允许范围为0.2。我假设图像将不包含任何类似的颜色,我有。
编辑:原色是: rgb(200,39,39) - hsv(200,80.5,78.4)
残留颜色为: rgb(246,215,210) - hsv(352,14.6,96.5)
我的形象是:

应用过滤器后得到的图像:

发布于 2022-11-01 14:24:06
若要删除red颜色,如果色调介于0.9和0.1 (约)α之间,则应该为零。
使用下面的方法,它就能工作了。
let hue = getHue(red: red, green: green, blue: blue)
var alpha : CGFloat = 1.0
if (hue < 0.1 && hue >= 0.0) || (hue > 0.9 && hue <= 1.0){
alpha = 0.0
} 我认为您的代码的问题在于它从来不考虑0.9到1.0之间的范围。它总是考虑从0.0xxx到0.1xxx之间的一些范围。
https://stackoverflow.com/questions/74230729
复制相似问题