| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
pwmd
9年前发布

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