IOS繪製圖片水印以及文字水印

今天在做項目的時候有用到給用戶上傳的圖片添加水印的功能,於是就封裝了一個UIImage的分類,直接用一行代碼調用就可以給圖片繪上水印了。

水印分爲兩種,一種是圖片水印,另一種就是文字水印。首先讓我們來看看如何繪製圖片水印。

首先我們創建了一個分類:

既然是要調用,那肯定使用public屬性的方法,在.h文件中申明方法

//圖片水印
+(UIImage *)imageWithBackgroudImage:(NSString *)bkImagename andLogoImage:(NSString *)lgImagename;

然後實現它,大致的原理就是先繪製主圖,填充整個圖形上下文,然後再繪製Logo圖片,然後通過圖形上下文獲取當前的圖片,也就是兩者合爲一體的圖片。代碼如下:

+(UIImage *)imageWithBackgroudImage:(NSString *)bkImagename andLogoImage:(NSString *)lgImagename
{
    //0.取出主圖片
    UIImage *mainImage = [UIImage imageNamed:bkImagename];
    //1.取得圖片上下文bitmap(三個參數分別爲:大小,是否透明,縮放度)
    UIGraphicsBeginImageContextWithOptions(mainImage.size, NO, 0);
    //2.繪製主圖
    [mainImage drawAtPoint:CGPointMake(0, 0)];
    
    //3.取出logo圖片
    UIImage *logoImage = [UIImage imageNamed:lgImagename];
    //4.繪製logo圖片
    [logoImage drawAtPoint:CGPointMake(mainImage.size.width-logoImage.size.width-10, 10)];
    //5.取出圖形上下文中得圖片
    UIImage *finalimage = UIGraphicsGetImageFromCurrentImageContext();
    //6.傳回圖片
    return finalimage;
}

同理,添加文字LOGO也是一樣,只不過需要用NSDictionary來保存字符串的一些屬性,代碼如下:

+(UIImage *)imageWithBackgroudImage:(NSString *)bkImagename andStringLogo:(NSString *)string
{
    //0.取得主圖片
    UIImage *mainImage = [UIImage imageNamed:bkImagename];
    //1.取出圖形上下文
    UIGraphicsBeginImageContextWithOptions(mainImage.size, NO, 0);
    //2.繪製
    [mainImage drawAtPoint:CGPointMake(0, 0)];
    //3.設置字體
    NSDictionary *dict = @{NSFontAttributeName:[UIFont fontWithName:@"HelveticaNeue-Bold" size:8.0f],NSForegroundColorAttributeName:[UIColor whiteColor]};
    //4.繪製文字
    [string drawAtPoint:CGPointMake(mainImage.size.width-50, 0) withAttributes:dict];
    //5.取出圖片
    UIImage *finalimage = UIGraphicsGetImageFromCurrentImageContext();
    //6.傳回圖片
    return finalimage;
    
}

這樣一來,我們就算封裝好了這個方法。只需要在控制器裏調用一句話就可以輕鬆給圖片添加水印了。

//圖片水印使用方法
    UIImage *image = [UIImage imageWithBackgroudImage:@"psb" andLogoImage:@"logo1"];

其實這個並不是很難很高深的應用,但在開發過程中我們要善於去發現,一些常用的方法和屬性,我們應當將它封裝起來,提高我們代碼運行的效率。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章