iPhone, how does one overlay one image onto another to create a new image to save? (watermark)

前端 未结 5 1191
逝去的感伤
逝去的感伤 2021-01-30 00:13

Basically I want to take an image that the user chooses from their photo library and then apply a watermark, a triangle in the lower right that has the app name on it. I have th

相关标签:
5条回答
  • 2021-01-30 00:45

    The solution provided by omz also works in Swift, like so:

    let backgroundImage = UIImage(named: "image.png")!
    let watermarkImage = UIImage(named: "watermark.png")!
    
    UIGraphicsBeginImageContextWithOptions(backgroundImage.size, false, 0.0)
    backgroundImage.draw(in: CGRect(x: 0.0, y: 0.0, width: backgroundImage.size.width, height: backgroundImage.size.height))
    watermarkImage.draw(in: CGRect(x: backgroundImage.size.width - watermarkImage.size.width, y: backgroundImage.size.height - watermarkImage.size.height, width: watermarkImage.size.width, height: watermarkImage.size.height))
    let result = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    
    0 讨论(0)
  • 2021-01-30 00:51

    SWIFT 4

                        let backgroundImage = imageData!
                        let watermarkImage = #imageLiteral(resourceName: "jodi_url_icon")
    
                        UIGraphicsBeginImageContextWithOptions(backgroundImage.size, false, 0.0)
                        backgroundImage.draw(in: CGRect(x: 0.0, y: 0.0, width: backgroundImage.size.width, height: backgroundImage.size.height))
                        watermarkImage.draw(in: CGRect(x: 10, y: 10, width: watermarkImage.size.width, height: backgroundImage.size.height - 40))
    
                        let result = UIGraphicsGetImageFromCurrentImageContext()
                        UIGraphicsEndImageContext()
                        self.imgaeView.image = result
    

    Use result to UIImageView, tested.

    0 讨论(0)
  • 2021-01-30 00:52

    SWIFT 5 Function:

    func addWaterMark(image: UIImage) -> UIImage {
            let backgroundImage = image//UIImage(named: "image.png")
            let watermarkImage = UIImage(named: "waterMark.png")
    
            UIGraphicsBeginImageContextWithOptions(backgroundImage.size, false, 0.0)
            backgroundImage.draw(in: CGRect(x: 0.0, y: 0.0, width: backgroundImage.size.width, height: backgroundImage.size.height))
            watermarkImage!.draw(in: CGRect(x: backgroundImage.size.width - watermarkImage!.size.width, y: backgroundImage.size.height - watermarkImage!.size.height, width: watermarkImage!.size.width, height: watermarkImage!.size.height))
            let result = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext()
            return result!
        }
    
    0 讨论(0)
  • 2021-01-30 00:54

    You can use this method, which is very dynamic and you can specify the starting position of the second image and total size of the image.

    -(UIImage *) addImageToImage:(UIImage *)img withImage2:(UIImage *)img2 andRect:(CGRect)cropRect withImageWidth:(int) width{
    
        CGSize size = CGSizeMake(width,40);
        UIGraphicsBeginImageContext(size);
    
        CGPoint pointImg1 = CGPointMake(0,0);
        [img drawAtPoint:pointImg1];
    
        CGPoint pointImg2 = cropRect.origin;
        [img2 drawAtPoint: pointImg2];
    
        UIImage* result = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return result;
    
    }
    
    0 讨论(0)
  • 2021-01-30 01:06

    It's pretty easy:

    UIImage *backgroundImage = [UIImage imageNamed:@"image.png"];
    UIImage *watermarkImage = [UIImage imageNamed:@"watermark.png"];
    
    UIGraphicsBeginImageContext(backgroundImage.size);
    [backgroundImage drawInRect:CGRectMake(0, 0, backgroundImage.size.width, backgroundImage.size.height)];
    [watermarkImage drawInRect:CGRectMake(backgroundImage.size.width - watermarkImage.size.width, backgroundImage.size.height - watermarkImage.size.height, watermarkImage.size.width, watermarkImage.size.height)];
    UIImage *result = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    

    If you want the background and watermark to be of the same size then use this code

    ...
    [backgroundImage drawInRect:CGRectMake(0, 0, backgroundImage.size.width, backgroundImage.size.height)];
    [watermarkImage drawInRect:CGRectMake(0, 0, backgroundImage.size.width, backgroundImage.size.height)];
    ...
    
    0 讨论(0)
提交回复
热议问题