ios - 将图像编辑成圆形并插入 Swift 中的另一个图像

标签 ios swift uiimage

我有image1,我想将该图像做成圆形,然后将其插入image2。如何使用 swift 做到这一点?我无法使用 Photoshop 或其他图像编辑工具执行此操作,因为我的 image1 每次都可能不同。

编辑:这是我想要实现的目标: enter image description here

花是image1

编辑2:我尝试过的方法和效果:

let image2 = UIImage(named: "RedPin")
let newSize = CGSizeMake(image2!.size.width, image2!.size.height)
UIGraphicsBeginImageContext(newSize)

image2!.drawInRect(CGRectMake(0,0,newSize.width,newSize.height))

let imageView: UIImageView = UIImageView(image: image1)
var layer: CALayer = CALayer()
layer = imageView.layer

layer.masksToBounds = true
layer.cornerRadius = CGFloat(65)

UIGraphicsBeginImageContext(imageView.bounds.size)
layer.renderInContext(UIGraphicsGetCurrentContext()!)
let roundedImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()

// decrease top image size
roundedImage.drawInRect(CGRectMake(10,10,45,45), blendMode: .Normal, alpha:1.0)

let createdNewImage = UIGraphicsGetImageFromCurrentImageContext()

然而,image1 更像是一个带有圆角边缘的正方形,并且一般来说图像质量似乎较低。以下是上面函数的作用:

enter image description here

编辑3: Toucan库非常擅长创建圆形图像(let roundedImage = Toucan(image: newImage).maskWithEllipse().image),但最终图像版本看起来仍然模糊。这是为什么?

最佳答案

我有像这样用圆角设置图像,代码和你一样。

func UserImageForAnnotation() -> UIImage {

        let userPinImg : UIImage = UIImage(named: "pin_user.png")!
        UIGraphicsBeginImageContextWithOptions(userPinImg.size, false, 0.0);

        userPinImg.drawInRect(CGRect(origin: CGPointZero, size: userPinImg.size))

        let roundRect : CGRect = CGRectMake(2, 2, userPinImg.size.width-4, userPinImg.size.width-4)

        let myUserImgView = UIImageView(frame: roundRect)
        myUserImgView.image = UIImage(named: "pic.png")
        //        myUserImgView.backgroundColor = UIColor.blackColor()
        //        myUserImgView.layer.borderColor = UIColor.whiteColor().CGColor
        //        myUserImgView.layer.borderWidth = 0.5

        let layer: CALayer = myUserImgView.layer

        layer.masksToBounds = true
        layer.cornerRadius = myUserImgView.frame.size.width/2

        UIGraphicsBeginImageContextWithOptions(myUserImgView.bounds.size, myUserImgView.opaque, 0.0)
        layer.renderInContext(UIGraphicsGetCurrentContext()!)
        let roundedImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()

        roundedImage.drawInRect(roundRect)


        let resultImg : UIImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()

        return resultImg

    }

这在我的 pin 图像中给出了我想要的准确结果。

user pin image

关于ios - 将图像编辑成圆形并插入 Swift 中的另一个图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34352908/

相关文章:

ios - 为什么我的 Swift 代码不工作?

ios - 覆盖 IOS UIButton 按钮按下

ios - 来自 Parse 对象的 UIPickerView 数据

ios - deleteRowAtIndexPath 实际上并没有删除该行

iphone - iOS 清除 UIWebView 的回溯历史

ios - 使用 UIView 框架裁剪 UIImage

swift - MKMapView NSInvalidArgumentException 无效区域在 ios 9 swift 中崩溃?

swift : Animate SKSpriteNode Gradient

swift - 如何在 rxSwift 4.0 中使用 UITextField.delegate textFieldDidEndEditing

ios - 用另一种颜色替换图像中的特定颜色