iOS 保存图像并命名

标签 ios swift image file save

我有一个应用程序可以拍摄照片并将其与另一张图像合并。我希望能够显示应用程序中拍摄的所有图像(并且仅是我的应用程序)并在图库 View 中显示它们。我遇到的问题是为图像指定名称。

我尝试了很多不同的方法

第一次尝试

UIImageWriteToSavedPhotosAlbum(newImage, nil, nil, nil)

这保存了图像,但我不知道如何检索它

第二次尝试

PHPhotoLibrary.sharedPhotoLibrary().performChanges({
    let assetRequest = PHAssetChangeRequest.creationRequestForAssetFromImage(newImage)

    }, completionHandler: { (success, error) -> Void in
        if success {
            //image saved to photos library.
            print("image saved")
        }
});

与第一次尝试相同的问题

第三次尝试

let date :NSDate = NSDate()

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'_'HH:mm:ss"
dateFormatter.timeZone = NSTimeZone(name: "GMT")

let imageName = "\(dateFormatter.stringFromDate(date)).jpg"

//var paths: [AnyObject] = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true)
var documentsDirectoryPath = getDocumentsURL().relativePath
documentsDirectoryPath! += imageName

let settingsData: NSData = UIImageJPEGRepresentation(newImage, 1.0)!
settingsData.writeToFile(documentsDirectoryPath!, atomically: true)

这似乎最有希望,但文件会被机器人保存

我在这里查看了各种答案,但仍然无法找到解决方案

最佳答案

添加斜杠作为 imageName 字符串的第一个字符,如下所示:

let imageName = "/\(dateFormatter.stringFromDate(date)).jpg"

否则路径将为“..../Documentsmyimagename”,但它应该是“..../Documents/myimagename” 即,如果没有附加斜杠,图像将保存到“文档”上方的文件夹中

我还建议不要在文件名中使用冒号字符,在 Mac 上,冒号是不允许的,并且会自动替换。

这是我在新的 XCode 项目中测试的代码,它对我有用(我将文件“myimage.png”放在项目的根文件夹中):

let newImage = UIImage.init(named: "myimage")


        let date :NSDate = NSDate()

        let dateFormatter = NSDateFormatter()
        //dateFormatter.dateFormat = "yyyy-MM-dd'_'HH:mm:ss"
        dateFormatter.dateFormat = "yyyy-MM-dd'_'HH_mm_ss"

        dateFormatter.timeZone = NSTimeZone(name: "GMT")

        let imageName = "/\(dateFormatter.stringFromDate(date)).jpg"
        print(imageName)
        //var paths: [AnyObject] = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true)
        //var documentsDirectoryPath = getDocumentsURL().relativePath
        var documentsDirectoryPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] 
        documentsDirectoryPath += imageName
        print(documentsDirectoryPath)

        let settingsData: NSData = UIImageJPEGRepresentation(newImage!, 1.0)!
        settingsData.writeToFile(documentsDirectoryPath, atomically: true)

关于iOS 保存图像并命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35796218/

相关文章:

android - 在 Android 中获取 Google 个人资料图片

ios - cellForItemAtIndexPath 在强制滚动以使其可见后返回 nil

html - 操纵文本位置 CSS/HTML

c# - 检查图像是否着色

ios - UIVisualEffectView 延迟与 UIModalTransitionStyle CrossDissolve

xcode - Swift SpriteKit 中的子类化

ios - 如何使用 AVPlayer 快速播放 youtube 视频?

ios - iOS本地化中es和es-419有什么区别?

ios - 从其他 UIViewController 隐藏 UIImageView

android - 循环一个 React-Native UI 组件