将图像数组转换为NSData

问题描述 投票:0回答:1

我正在使用以下代码将单个图像转换为数据,以便将UIImage本地保存。以下代码适用于保存和共享图像,用于保存单个图像。现在,我正在尝试保存滚动视图图像数组,并为单个图像提供保存选项。

导入UIKit

类ViewController:UIViewController,UIScrollViewDelegate {

@IBOutlet weak var scrollView: UIScrollView!

var images: [String] = ["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]
 var frame = CGRect(x:0,y:0,width:0,height:0)
var CDataArray = NSMutableArray();

@IBOutlet weak var myImage: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()

   setupImageView()

}

func setupImageView() {

          for index in 0..<images.count {

                   frame.origin.x = scrollView.frame.size.width * CGFloat(index)
                            frame.size = scrollView.frame.size
                            myImage = UIImageView(frame:frame)
                            myImage.image = UIImage(named: images[index])!
                            scrollView.showsVerticalScrollIndicator = false
                            self.scrollView.addSubview(myImage)


    }
           scrollView.contentSize = CGSize(width: (scrollView.frame.size.width * CGFloat(images.count)), height: scrollView.frame.size.height)
            scrollView.delegate = self
}
@IBAction func saveImage(_ sender: AnyObject) {

  for index in 0..<images.count {

    let imageData = UIImage(named: images[index]!).pngData()
      let compresedImage = UIImage(data: imageData!)
      UIImageWriteToSavedPhotosAlbum(compresedImage!, nil, nil, nil)

      let alert = UIAlertController(title: "Saved", message: "Your image has been saved", preferredStyle: .alert)
      let okAction = UIAlertAction(title: "Ok", style: .default, handler: nil)
      alert.addAction(okAction)
      self.present(alert, animated: true, completion: nil)    }
 }

@IBAction func shareImage(_ sender: UIButton) {

   for index in 0..<images.count {

    let image = UIImage(named: images[index])

    let imageToShare = [ image! ]
    let activityViewController = UIActivityViewController(activityItems: imageToShare, applicationActivities: nil)
    activityViewController.popoverPresentationController?.sourceView = self.view
    activityViewController.excludedActivityTypes = [ UIActivity.ActivityType.airDrop, UIActivity.ActivityType.postToFacebook ]

    self.present(activityViewController, animated: true, completion: nil)
    }

}

}

我可以成功保存图像。我想知道为什么我们需要压缩图像以将其保存在本地。另外,我想对图像数组做同样的事情。

我想将图像数组转换为数据以保存单个图像。有人可以帮我吗?

ios nsdata swift5 save-image
1个回答
0
投票

如果图像数组由UIImageViews组成,则简单的for循环可能是最简单的:

for imageView in myImageViews {
    guard let image = imageView.image else { continue }
    UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
}

如果这不能解决您的问题,请发布代码以显示图像阵列的组成。

© www.soinside.com 2019 - 2024. All rights reserved.