如何以编程方式将映像复制到资产目录

时间:2015-05-16 06:20:48

标签: swift ios8

我使用imagePickerController从相机胶卷中选择一张图像。我想将该图像复制到像Images.xcassets这样的资产目录中。你怎么能这样做?

2 个答案:

答案 0 :(得分:0)

图像xcassets只不过是与特定文件/目录组织和JSON目录相结合的图像集合,因此原则上创建它们并不困难:

  1. 创建一个合适的目录结构(我将参考splash图像,因为它们是我有更多经验的那个):
  2. myimages.xcassets/
    myimages.xcassets/LaunchImage.launchimage
    
    1. 将图片放入其中
    2. 创建一个合适的JSON目录(扰流板:NSJSONSerialization),我的例子是关于启动图像:
    3. "images": [
          {
              "scale": "2x",
              "orientation": "portrait",
              "minimum-system-version": "7.0",
              "filename": "launch_seed_ipad_portrait.png",
              "idiom": "ipad",
              "extent": "full-screen"
          },
          [... etc ...]
      }
      

      就是这样。点是,作为捆绑包,图像目录更像是一个设施,用于简化Xcode项目中的图像组织 (例如,我在项目自动化的上下文中创建它们),而不是要编译的东西在应用中,所以你的问题看起来有点像问:

      • 如何从代码
      • 创建xib
      • 如何将应用程序中的捆绑包放在一起

      所有可以继续进行的操作,如果付出相当大的努力,但不太可能做得很好(因为应用程序无法使用结果,或者有更方便的替代方案)。

      希望这有帮助

答案 1 :(得分:0)

(SWIFT):

没有应用资源,但您可以将图像保存在"文档":

let dirPath = dirPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]
let imagePath = (dirPath as NSString).stringByAppendingPathComponent("IMAGE.EXT")
let fileManager = NSFileManager.defaultManager()
do
{
    try fileManager.createDirectoryAtPath(imagePath, withIntermediateDirectories: true, attributes: nil)
}
catch _
{
}
if let image: UIImage = UIImage(data: DATA)//OR YOUR SOURCE
{
    var imageData: NSData! = UIImagePNGRepresentation(image)
    if imageData == nil
    {
        imageData = UIImageJPEGRepresentation(image, 100)
    }
    if imageData == nil
    {
        //DO SOMETHING..
    }

    imageData!.writeToFile(imagePath, atomically: true)
}

然后加载:

if fileManager.fileExistsAtPath(imagePath)
{
    return UIImage(contentsOfFile: imagePath)
}

这对我有用,希望有所帮助!