2016-01-29 47 views
0

我知道還有其他幾種方法可以做到這一點;我不想輸入任何我不需要的東西。如果有人可以用他的代碼來幫助我,那會很棒。如何使用此代碼爲圖像添加水印?

目前,它只保存沒有水印圖像的原始圖像。

extension UIImage { 

    class func imageWithWatermark(image1: UIImageView, image2: UIImageView) -> UIImage { 
     UIGraphicsBeginImageContextWithOptions(image1.bounds.size, false, 0.0) 
     image2.layer.renderInContext(UIGraphicsGetCurrentContext()!) 
     image1.layer.renderInContext(UIGraphicsGetCurrentContext()!) 
     let img = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 
     return img 
    } 
} 

func addWatermark() { 
    let newImage = UIImage.imageWithWatermark(imageView, image2: watermarkImageView) 
    UIImageWriteToSavedPhotosAlbum(newImage, nil, nil, nil) 
} 

編輯:我已經有水印出現在保存的圖像。

我不得不切換層的順序:

image1.layer.renderInContext(UIGraphicsGetCurrentContext()!) 
image2.layer.renderInContext(UIGraphicsGetCurrentContext()!) 

但是,它沒有出現在正確的place.It似乎總是出現在圖像的中心。

+0

所以你要簡單地把一些文字圖像? –

+0

你看看http://stackoverflow.com/questions/6992830/how-to-write-text-on-image-in-objective-c-iphone? –

+0

對不起,沒有圖片。我想要一個圖像在另一個圖像上面。 – bkwebhero

回答

6

如果你抓住的UIImageViews'圖像,您可以使用以下概念:

if let img = UIImage(named: "image.png"), img2 = UIImage(named: "watermark.png") { 

    let rect = CGRect(x: 0, y: 0, width: img.size.width, height: img.size.height) 

    UIGraphicsBeginImageContextWithOptions(img.size, true, 0) 
    let context = UIGraphicsGetCurrentContext() 

    CGContextSetFillColorWithColor(context, UIColor.whiteColor().CGColor) 
    CGContextFillRect(context, rect) 

    img.drawInRect(rect, blendMode: .Normal, alpha: 1) 
    img2.drawInRect(CGRectMake(x,y,width,height), blendMode: .Normal, alpha: 1) 

    let result = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    UIImageWriteToSavedPhotosAlbum(result, nil, nil, nil) 

} 
+0

應該被標記爲接受 –