简体   繁体   English

如何旋转遮罩的图像?

[英]How to rotate masked image?

Right now my code displays a image like this 现在我的代码显示这样的图像

在此处输入图片说明 It would work if I could just rotate the image clockwise 90 degrees. 如果我可以将图像顺时针旋转90度,它将起作用。 How would I do this. 我该怎么做。 Code is listed below. 代码在下面列出。 I took out some of the unnecessary lines of code for this. 我为此删除了一些不必要的代码行。

import UIKit

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
    var screenView: UIImageView!
    var image1 = UIImage(named: "w")

    func cropImageIntoQuarterSquare(image: UIImage) -> UIImage? {
        //shape of mask
        let image = photoDispaly.image
        let maskingImage = UIImage(named: "mask5")

        //where the masking code starts
        photoDispaly.image = maskImage(image: image!, mask: maskingImage!)
        photoDispaly.autoresizingMask = [.flexibleWidth, .flexibleHeight, .flexibleBottomMargin, .flexibleRightMargin, .flexibleLeftMargin, .flexibleTopMargin]
        photoDispaly.contentMode = .scaleAspectFit // OR .scaleAspectFill
        photoDispaly.clipsToBounds = true

        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
    }

    @IBOutlet var photoDispaly: UIImageView!

    func maskImage(image:UIImage, mask:(UIImage))->UIImage{
        let imageReference = image.cgImage
        let maskReference = mask.cgImage
        let imageMask = CGImage(maskWidth: maskReference!.width,
                                height: maskReference!.height,
                                bitsPerComponent: maskReference!.bitsPerComponent,
                                bitsPerPixel: maskReference!.bitsPerPixel,
                                bytesPerRow: maskReference!.bytesPerRow,
                                provider: maskReference!.dataProvider!, decode: nil, shouldInterpolate: true)
        let maskedReference = imageReference!.masking(imageMask!)
        let maskedImage = UIImage(cgImage:maskedReference!)
        return maskedImage
    }

    func image(_ image: UIImage, didFinishSavingWithError error: Error?, contextInfo: UnsafeRawPointer) {
        if let error = error {
            return
        } else {
            return
        }
    }

you could run a transform on your UIImageView in your ViewDidLoad function 您可以在ViewDidLoad函数中的UIImageView上运行转换

photoDispaly.transform = CGAffineTransform(rotationAngle: M_PI/4)

also you may want to rename Dispaly to Display ;) 您也可能希望将Dispaly重命名为Display;)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM