gpt4 book ai didi

ios - 在 Swift 中结合 CGBitmapInfo 和 CGI​​mageAlphaInfo

转载 作者:IT王子 更新时间:2023-10-29 05:42:39 27 4
gpt4 key购买 nike

我正在将 Apple 的 UIImageEffects 示例代码从 Objective-C 重写为 Swift,我对以下行有疑问:

vImage_CGImageFormat format = {
.bitsPerComponent = 8,
.bitsPerPixel = 32,
.colorSpace = NULL,
.bitmapInfo = kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Little,
.version = 0,
.decode = NULL,
.renderingIntent = kCGRenderingIntentDefault
};

这是我在 Swift 中的版本:

let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.PremultipliedFirst.rawValue | CGBitmapInfo.ByteOrder32Little.rawValue)
let format = vImage_CGImageFormat(bitsPerComponent: 8, bitsPerPixel: 32, colorSpace: nil, bitmapInfo: bitmapInfo, version: 0, decode: nil, renderingIntent: .RenderingIntentDefault)

这是在 Swift 中创建 bitmapInfo 的最简单方法吗?

最佳答案

你可以让它更简单一些:

let bimapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.PremultipliedFirst.rawValue)
.union(.ByteOrder32Little)

不幸的是,您无法避免将 CGImageAlphaInfo 转换为 CGBitmapInfo。这只是当前 API 的一个弱点。但是一旦有了它,就可以使用 .union 将它与其他值结合起来。一旦枚举类型已知,您就不必一直重复它。

我很奇怪这里没有接线员。我为此打开了雷达,并包含了一个 | 实现。 http://www.openradar.me/23516367

public func |<T: SetAlgebraType>(lhs: T, rhs: T) -> T {
return lhs.union(rhs)
}

@warn_unused_result
public func |=<T : SetAlgebraType>(inout lhs: T, rhs: T) {
lhs.unionInPlace(rhs)
}

let bimapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.PremultipliedFirst.rawValue)
| .ByteOrder32Little

关于ios - 在 Swift 中结合 CGBitmapInfo 和 CGI​​mageAlphaInfo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33673350/

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