ios - 如何调整正在打印在另一个图像上的图像的大小(swift3)

标签 ios swift swift3 scale cgrect

现在我的代码在红色框上保存了一个蓝色框。我需要将蓝色框的大小缩小 50%。这样所有的蓝色框周围都有一个红色边框。我有一个应该能够缩小图像的扩展文件,但我不知道将其放入我的代码的何处。

Pic

 extension UIImage {
func resized(withPercentage percentage: CGFloat) -> UIImage? {
    let canvasSize = CGSize(width: size.width * percentage, height: size.height * percentage)
    UIGraphicsBeginImageContextWithOptions(canvasSize, false, scale)
    defer { UIGraphicsEndImageContext() }
    draw(in: CGRect(origin: .zero, size: canvasSize))
    return UIGraphicsGetImageFromCurrentImageContext()
}
func resized(toWidth width: CGFloat) -> UIImage? {
    let canvasSize = CGSize(width: width, height: CGFloat(ceil(width/size.width * size.height)))
    UIGraphicsBeginImageContextWithOptions(canvasSize, false, scale)
    defer { UIGraphicsEndImageContext() }
    draw(in: CGRect(origin: .zero, size: canvasSize))
    return UIGraphicsGetImageFromCurrentImageContext()
}}

import UIKit
class ViewController: UIViewController {

var image1 = UIImage(named: "red")
var image2 = UIImage(named: "blue")




    func cropImageIntoQuarterSquare(image: UIImage) -> UIImage? {
        let originalImageSize: CGSize = image.size
        let smallImageSize = CGSize(width: (originalImageSize.width + 40), height: (originalImageSize.height + 40))


        UIGraphicsBeginImageContext(smallImageSize)
        image.draw(at: CGPoint.zero)
        let imageResult = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()

        return imageResult
    }



override func viewDidLoad() {
    super.viewDidLoad()}
    func saveImage(image1: UIImage, image2: UIImage) -> UIImage? {
        let size1 = image1.size
        let size2 = image2.size
        let origin = CGPoint(x: size1.width - size2.width, y: size1.height - size2.height)

        UIGraphicsBeginImageContext(size1)
        image1.draw(in: CGRect(origin: CGPoint.zero, size: size1))
        image2.draw(in: CGRect(origin: origin, size: size2))
        let combinedImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()

        return combinedImage
    }

    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)
        }
    }



@IBAction func d(_ sender: Any) {


    guard let croppedImage = cropImageIntoQuarterSquare(image: image2!),
        let combinedImage = saveImage(image1: image1!, image2: croppedImage) else {
            // handle the error
            return
    }

    UIImageWriteToSavedPhotosAlbum(combinedImage, self, #selector(image(_:didFinishSavingWithError:contextInfo:)), nil)
    }}

最佳答案

此功能可能对您有所帮助。您可以根据自己的意愿编辑大小和原点值

func drawImage() -> UIImage {
    var bottomImage = UIImage(named: "red")
    //background image
    let image: UIImage = UIImage(named: "blue")
    //foreground image
    let newSize: CGSize = CGSize(width: 80, height: 80)
    UIGraphicsBeginImageContext(newSize)

    bottomImage.draw(in: CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height))

    image.draw(in: CGRect(x: 20, y: 20, width: 40, height: 40), blendMode: .normal, alpha: 1.0)
    let newImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
    UIGraphicsEndImageContext()

    return newImage
  }

关于ios - 如何调整正在打印在另一个图像上的图像的大小(swift3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42571181/

相关文章:

ios - Alamofire 4 网络流关闭

iOS 只旋转 subview Controller 之一

ios - 为什么 SDWebImage 在加载后不在单元格中显示图像?

swift - Swift 3 中的所有 UTF8 字形

ios - 以编程方式创建 UIScrollView 作为另一个 UIView 的 subview 的必要步骤是什么?

ios - 如何垂直对齐 textView 中的文本?

ios - 在 downloadTask 完成后执行 segue

ios - fetch() 在 react-native (iOS) 上执行 GET 而不是 POST

javascript - 如何用JS制作类似iOS主屏的分页效果?

ios - 在 View Controller 之间不断传递数据而无需使用segue?使用 Swift