gpt4 book ai didi

ios - 使用 writeJPEGRepresentation 函数保存带有深度数据的 CIImage

转载 作者:行者123 更新时间:2023-11-29 05:13:53 25 4
gpt4 key购买 nike

我有一张带有深度数据的肖像图像,经过一些处理后,我想将其副本保存到保留深度数据的用户相册中(在这种情况下,UIImage 不是一个选项)。对于此任务,我使用函数 writeJPEGRepresentation() ,它似乎成功地将修改后的图像与深度信息保存到某处;但是,它不会出现在相册中。

为了让它出现在相册中,我尝试了PHPhotoLibraryperformChanges()函数,这次出现在专辑里,但不是修改版而是原版!?非常感谢任何帮助。谢谢。

代码如下:

func saveWithDepth(image : CIImage) {
do {
let colorSpace = CGColorSpace(name: CGColorSpace.sRGB)
let depthdata = DepthData
let url = Url
try Context.writeJPEGRepresentation(of: image, to: url!, colorSpace: colorSpace!,
options: [CIImageRepresentationOption.avDepthData :depthdata!])

PHPhotoLibrary.shared().performChanges({
let options = PHAssetResourceCreationOptions()
let creationRequest = PHAssetCreationRequest.forAsset()
creationRequest.addResource(with: .alternatePhoto, fileURL: url!, options: options)
}, completionHandler: { success, error in
if !success {
print("AVCam couldn't save the movie to your photo library: \(String(describing: error))")
}
})
} catch {
print("failed")
}
}

最佳答案

我认为问题在于 JPEG 无法存储深度数据(据我所知)。 HEIF 是您应该使用的格式。也许你可以尝试这样的事情:

func saveWithDepth(image: CIImage) {
let colorSpace = CGColorSpace(name: CGColorSpace.sRGB)
let depthdata: DepthData
let imageData = context.heifRepresentation(of: image, format: .BGRA8, colorSpace: colorSpace!,
options: [CIImageRepresentationOption.avDepthData: depthdata!])

PHPhotoLibrary.shared().performChanges({
let options = PHAssetResourceCreationOptions()
let creationRequest = PHAssetCreationRequest.forAsset()
creationRequest.addResource(with: .photo, data: imageData, options: options)
}, completionHandler: { success, error in
if !success {
print("Couldn't save the photo to your photo library: \(String(describing: error))")
}
})
}

几点说明:

  • 我认为深度数据实际上是一个有意义的值?
  • 您可以创建图像数据,然后将其直接传递到 creationRequest。这样您就不需要将文件保存到某个中间位置(之后您需要删除该位置)。

关于ios - 使用 writeJPEGRepresentation 函数保存带有深度数据的 CIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59392770/

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