反转黑白同时保留颜色

问题描述 投票:0回答:1

我有这个 PDF,我正在将其转换为

UIImage
并在
Image
中渲染:

https://static.avalanche.report/bulletins/2023-05-01/2023-04-30_15-00-00/EUREGIO_7aafd765-0541-4abf-92f0-efc18d6efbf7.pdf

我需要使该图像适合我的应用程序的深色配色方案,因此我希望实际地图变为黑色/深灰色,但保持颜色不变。

如果我在

ZStack
中叠加两个图像并使用混合模式和颜色反转,我可以非常接近所需的结果:

  ZStack {
    Image(uiImage: self.mapImage!)
        .resizable()
        .scaledToFill()
        .colorInvert()
        .saturation(0)
        .brightness(0.2)
    Image(uiImage: self.mapImage!)
        .resizable()
        .scaledToFill()
        .blendMode(.color)
}

但是正如你所看到的,黄色变成了深绿色。

在 Affinity Design 中使用颜色调整和混合模式时,我发现一种组合可以产生相当好的结果,除了一些难以阅读的文本:

  • 第 1 层:“变暗”混合模式
  • 第2层:反转+黑白+“添加”混合模式
  • 第3层:反转+黑白

我的问题是我在 Swift 中找不到“添加”混合模式,有

plusDarken
 plusLighten
但它们做完全不同的事情。

如何使用 Swift/SwiftUI 实现结果?

swift image-manipulation
1个回答
0
投票

您可以使用 SwiftUI 的 ColorBurnBlendMode 混合模式进行一些额外的调整。 迅速

Image(uiImage: self.mapImage!)
    .resizable()
    .scaledToFill()
    .colorInvert()
    .saturation(0)
    .brightness(0.2)
    .blendMode(.colorBurn) // Use ColorBurnBlendMode

Image(uiImage: self.mapImage!)
    .resizable()
    .scaledToFill()
    .colorMultiply(.black) // Multiply by black to make it darker

说明:

  1. 第一张图片是你已经在做的事情。
  2. 第二张图像使用 colorMultiply,您可以尝试不同的颜色或不透明度级别。只要继续微调即可。

将两个图像紧密结合在一起,如果不是你想要的那样。

© www.soinside.com 2019 - 2024. All rights reserved.