我正在使用以下代码将单个图像转换为数据,以便将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)
}
}
}
我可以成功保存图像。我想知道为什么我们需要压缩图像以将其保存在本地。另外,我想对图像数组做同样的事情。
我想将图像数组转换为数据以保存单个图像。有人可以帮我吗?
如果图像数组由UIImageViews组成,则简单的for循环可能是最简单的:
for imageView in myImageViews {
guard let image = imageView.image else { continue }
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
}
如果这不能解决您的问题,请发布代码以显示图像阵列的组成。