gpt4 book ai didi

iOS:UIImagePNGRepresentation().writeToFile 未写入预期目录

转载 作者:搜寻专家 更新时间:2023-10-31 22:03:42 27 4
gpt4 key购买 nike

使用 Swift 我尝试从 URL 下载 JPG 然后将该图像保存到文件,但是当我尝试将它保存到不同的目录时它惯于。它将下载到应用程序的 Documents 文件夹,但当我尝试将路径设置为另一个子文件夹时不会。

let dir = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0].stringByAppendingPathComponent("SubDirectory") as String
let filepath = dir.stringByAppendingPathComponent("test.jpg")
UIImagePNGRepresentation(UIImage(data: data)).writeToFile(filepath, atomically: true)

当我运行它时,它没有保存图像吗?为什么会这样?我需要事先创建子文件夹吗?

最佳答案

几个想法:

  1. 子目录文件夹是否已经存在?如果没有,您必须先创建它。现在建议使用 NSURL 而不是路径字符串。这样就产生了:

    let filename = "test.jpg"
    let subfolder = "SubDirectory"

    do {
    let fileManager = NSFileManager.defaultManager()
    let documentsURL = try fileManager.URLForDirectory(.DocumentDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: false)
    let folderURL = documentsURL.URLByAppendingPathComponent(subfolder)
    if !folderURL.checkPromisedItemIsReachableAndReturnError(nil) {
    try fileManager.createDirectoryAtURL(folderURL, withIntermediateDirectories: true, attributes: nil)
    }
    let fileURL = folderURL.URLByAppendingPathComponent(filename)

    try imageData.writeToURL(fileURL, options: .AtomicWrite)
    } catch {
    print(error)
    }
  2. 我建议不要将 NSData 转换为 UIImage,然后再将其转换回 NSData。如果需要,您可以直接编写原始的 NSData 对象。

    通过 UIImage 往返的过程可能会丢失质量和/或元数据,可能会使生成的 Assets 更大等。通常应该使用原始的 NSData 在可能的情况下。

关于iOS:UIImagePNGRepresentation().writeToFile 未写入预期目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27042875/

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