IOS设置图片水印代码

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

设置图片水印的本质就是将两张图片混合成一个图片。

可以通过以下步骤来进行设置;

①创建一个基于位图的上下文(开启一个基于位图的上下文)

void UIGraphicsBeginImageContextWithOptions ( CGSize size, BOOL opaque, CGFloat scale )

size表示图层的大小,一般设置成背景图的大小

opaque表示是否透明:YES不透明 NO透明

scale表示缩放:0.0表示不缩放


②设置背景图片

③设置Logo图片


④从上下文中取得制作完毕的UIImage对象

UIImage * UIGraphicsGetImageFromCurrentImageContext ( void );

⑤关闭图层上下文

void UIGraphicsEndImageContext ( void );

⑥将图片格式转换为NSData

⑦然后保存到相关路径下面

    - (void)testWater  
    {  
        UIImage *bgImage = [UIImage imageNamed:@"scene"];  
          
          
        // 1.创建一个基于位图的上下文(开启一个基于位图的上下文)  
        // size : 新图片的尺寸  
        // opaque : YES : 不透明,  NO : 透明  
        // 这行代码过后.就相当于常见一张新的bitmap,也就是新的UIImage对象  
        UIGraphicsBeginImageContextWithOptions(bgImage.size, NO, 0.0);  
          
        // 2.画背景  
        [bgImage drawInRect:CGRectMake(0, 0, bgImage.size.width, bgImage.size.height)];  
          
        // 3.画右下角的水印  
        UIImage *waterImage = [UIImage imageNamed:@"logo"];  
        CGFloat scale = 0.2;  
        CGFloat margin = 5;  
        CGFloat waterW = waterImage.size.width * scale;  
        CGFloat waterH = waterImage.size.height * scale;  
        CGFloat waterX = bgImage.size.width - waterW - margin;  
        CGFloat waterY = bgImage.size.height - waterH - margin;  
        [waterImage drawInRect:CGRectMake(waterX, waterY, waterW, waterH)];  
          
        // 4.从上下文中取得制作完毕的UIImage对象  
        UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();  
          
        // 5.结束上下文  
        UIGraphicsEndImageContext();  
          
        // 6.显示到UIImageView  
        self.iconView.image = newImage;  
          
        // 7.将image对象压缩为PNG格式的二进制数据  
        NSData *data = UIImagePNGRepresentation(newImage);  
        //    UIImageJPEGRepresentation(<#UIImage *image#>, <#CGFloat compressionQuality#>)  
          
        // 8.写入文件  
        NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"new.png"];  
        [data writeToFile:path atomically:YES];  
    }