IOS设置图片水印代码详解手机开发

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

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

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

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];   
    }   

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/tech/aiops/3371.html

(0)
上一篇 2021年7月16日 14:29
下一篇 2021年7月16日 14:29

相关推荐

发表回复

登录后才能评论