如何使用CIRawFilter通过CoreImage加载RAW(DNG格式)图像文件?
解决CIRAWFilter加载DNG文件返回nil的问题
问题出在你构造URL的方式上:URL(string:)仅适用于网络地址(如HTTP/HTTPS链接),本地文件路径必须用专门的文件URL构造方法。
修正后的代码如下:
import Cocoa import CoreImage // 安全获取DNG文件路径 guard let rawSourcePath = Bundle.main.paths(forResourcesOfType: "DNG", inDirectory: nil).first else { fatalError("未找到目标DNG文件") } // 使用本地文件URL构造器创建正确的URL let rawFileURL = URL(fileURLWithPath: rawSourcePath) // 初始化CIRAWFilter if let rawFilter = CIRAWFilter(imageURL: rawFileURL) { // 示例:调整曝光参数 rawFilter.setValue(0.8, forKey: kCIRAWFilterExposureKey) // 获取处理后的输出图像 if let processedImage = rawFilter.outputImage { // 在这里添加对处理后图像的后续操作 } } else { fatalError("无法初始化CIRAWFilter,请检查DNG文件是否符合CoreImage支持的格式") }
额外注意点:
- 确认DNG文件已正确添加到Playground的Resources目录,且在文件检查器中勾选了对应的Playground目标
- 部分小众相机的RAW格式可能不被CoreImage原生支持,可以调用
CIRAWFilter.supportedRawImageURLs()方法,查看当前设备支持的RAW文件列表,验证你的DNG是否在其中
内容的提问来源于stack exchange,提问作者blabus
相关产品推荐
相关产品推荐

