【问题标题】:how to save 2 images on top of each other (swift3)如何将 2 张图像重叠保存(swift3)
【发布时间】:2017-06-05 23:35:47
【问题描述】:

我的代码现在只保存 1 张图片。我想在第一张图片上方的左上角保存一个较小的图片。最重要的是让它一起保存在照片库中。 2 张图像相互重叠。

import UIKit

class ViewController: UIViewController {


let imageView = UIImageView(frame: CGRect(x: 50, y: 50, width: 300, height: 300))
let imageView2 = UIImageView(frame: CGRect(x:200, y: 50, width: 100, height: 100))



override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    let image =  UIImage(named: "wall")!
    imageView.image = image


    let image2 = UIImage(named: "pic")!
    imageView2.image = image2

    imageView.addSubview(imageView2)


    imageView2.image = image2



    imageView.addSubview(imageView2)

    let topImage = UIImage(named: "wall")
    let bottomImage = UIImage(named: "pic")

    let size = CGSize(width: topImage!.size.width, height: topImage!.size.height + bottomImage!.size.height)
    UIGraphicsBeginImageContextWithOptions(size, false, 0.0)
    topImage!.draw(in: CGRect(x: 0, y: topImage!.size.height, width: size.width, height: bottomImage!.size.height))
    bottomImage!.draw(in: CGRect(x: 0, y: topImage!.size.height, width: size.width, height: bottomImage!.size.height))

    //your new Image
    let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
                   UIGraphicsEndImageContext()

}

@IBAction func press(_ sender: Any) {
     UIImageWriteToSavedPhotosAlbum(imageView.image!, self, #selector(image(_:didFinishSavingWithError:contextInfo:)), nil)
}
func image(_ image: UIImage, didFinishSavingWithError error: Error?, contextInfo: UnsafeRawPointer) {
    if let error = error {
        // we got back an error!
        let ac = UIAlertController(title: "Save error", message: error.localizedDescription, preferredStyle: .alert)
        ac.addAction(UIAlertAction(title: "OK", style: .default))
        present(ac, animated: true)
    } else {
        let ac = UIAlertController(title: "Saved!", message: "Your altered image has been saved to your photos.", preferredStyle: .alert)
        ac.addAction(UIAlertAction(title: "OK", style: .default))
        present(ac, animated: true)
    }}}

pic

【问题讨论】:

    标签: ios swift3 imageview save photo


    【解决方案1】:
        let imageView2 = UIImageView(frame: CGRect(x:200, y: 50, width: 100, height:100))
        let image2 =  UIImage(named: "wallsmallImage")!
        imageView2.image = image2
        imageView.addSub(imageView2)
    
    #Now merge both images
             let image =  UIImage(named: "wall")!
             imageView.image = image
            let image2 = UIImage(named: "pic")!
            imageView2.image = image2
    
           imageView.addSubview(imageView2)
    
            let topImage = UIImage(named: "wall")
            let bottomImage = UIImage(named: "pic")
    
            let size = CGSize(width: topImage!.size.width, height: topImage!.size.height + bottomImage!.size.height)
            UIGraphicsBeginImageContextWithOptions(size, false, 0.0)
            topImage!.draw(in: CGRect(x: 0, y: topImage!.size.height, width: size.width, height: bottomImage!.size.height))
             bottomImage!.draw(in: CGRect(x: 0, y: topImage!.size.height, width: size.width, height: bottomImage!.size.height))
    
            //your new Image
            let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
            UIGraphicsEndImageContext()
    

    【讨论】:

    • 我添加了您的代码,但仍然只保存了 1 张图像。我用你建议的代码编辑了我的问题。
    • 我添加了您的代码,在我看来,所有这些都在我上面的问题中加载了函数。有一些错误。我添加了一张图片,以便您可以看到错误。
    • hii @SamBurns ,代码已编辑..请检查..您可以将新的合并图像保存到库中
    • @V12 我用你隐含的解决方案更新了我的代码。见上面的问题。不确定我是否将代码放在正确的位置。但是代码仍然只保存 1 张图像。 “墙”总是被保存,我看不到“图片”。因此,只有在保存照片时才能看到 1 张图片。
    • @MahipalSingh 我用您隐含的解决方案更新了我的代码。见上面的问题。不确定我是否将代码放在正确的位置。但是代码仍然只保存 1 张图像。 “墙”总是被保存,我看不到“图片”。因此,只有在保存照片时才能看到 1 张图片。
    【解决方案2】:

    所有这些代码都进入一个不同的函数以将其添加到图像视图中。

         let bottomImage:UIImage = UIImage(named: "backdrop")!
            let topImage:UIImage = UIImage(named:"wall")!
            let topImage2:UIImage = UIImage(named:"wall")!
            let tpp:UIImage = letImageVIEW.image!
                      let right:UIImage = rightIMAGEVIEW.image!
    
            // Change here the new image size if you want
            let newSize = CGSize(width: bottomImage.size.width, height: bottomImage.size.height  )
            let newSize2 = CGSize(width: bottomImage.size.width, height: bottomImage.size.height)
            UIGraphicsBeginImageContextWithOptions(newSize, false, bottomImage.scale)
            //        bottomImage.draw(in: CGRect(x: 0,y: 0,width: newSize.width,height: newSize.height))
                  tpp.draw(in: CGRect(x: 0,y: 0,width: newSize2.width,height:   newSize2.height), blendMode:CGBlendMode.normal, alpha:1.0)
                  right.draw(in: CGRect(x: 0,y: 0,width: newSize2.width,height: newSize2.height), blendMode:CGBlendMode.normal, alpha:0.2)
    
            topImage.draw(in: CGRect(x: 0,y: 0,width: newSize.width/2,height: newSize.height/2), blendMode:CGBlendMode.normal, alpha:1.0)
            topImage2.draw(in: CGRect(x: 50,y: 0,width: newSize2.width/4,height: newSize2.height/4), blendMode:CGBlendMode.normal, alpha:1.0)
    
    
    
    
    
            let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
            UIGraphicsEndImageContext()
            finalImage.image = newImage
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-29
      • 1970-01-01
      • 2020-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多