千家信息网

如何使用iOS实现图片水印与封装

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍了如何使用iOS实现图片水印与封装,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。首先我们了解一下什么是水印及其作用?水
千家信息网最后更新 2026年11月01日如何使用iOS实现图片水印与封装

这篇文章主要介绍了如何使用iOS实现图片水印与封装,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

首先我们了解一下什么是水印及其作用?

水印:在图片上加的防止他人盗图的半透明logo、文字、图标

水印的作用:告诉你这个图片从哪来的,主要是一些网站为了版权问题、广告而添加的。

核心代码:

将字符串添加到图形上下文的方法- (void)drawAtPoint:(CGPoint)point withAttributes:(nullable NSDictionary *)attrs- (void)drawInRect:(CGRect)rect withAttributes:(nullable NSDictionary *)attrs将字符串添加到图形上下文的方法- (void)drawAtPoint:(CGPoint)point; // mode = kCGBlendModeNormal, alpha = 1.0- (void)drawAtPoint:(CGPoint)point blendMode:(CGBlendMode)blendMode alpha:(CGFloat)alpha;- (void)drawInRect:(CGRect)rect; // mode = kCGBlendModeNormal, alpha = 1.0- (void)drawInRect:(CGRect)rect blendMode:(CGBlendMode)blendMode alpha:(CGFloat)alpha;

基本步骤:

//1. 要手动创建一个位图上下文,创建位图上下文时,要指定大小,指定的大小,决定着生成图片的尺寸是多大void UIGraphicsBeginImageContext(CGSize size);//2. 把内容绘制到上下文当中//2.1绘制原始图片//2.2绘制文字//2.3绘制logo//3. 从上下文当中生成一张图片,把上下文当中绘制的所有内容合成在一起生成一张跟上下文尺度一样的图片UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext() ;//4.手动创建的上下文一定要手动去销毁掉UIGraphicsEndImageContext() ;

封装的实例代码:

SWWaterMarkImage.h

#import NS_ASSUME_NONNULL_BEGIN@interface SWWaterMarkImage : UIImage-(UIImage *)WaterImageWithImage:(UIImage *)image ImageLogo:(UIImage *)imageLogo title:(NSString *)string ;+(UIImage *)WaterImageWithImage:(UIImage *)image ImageLogo:(UIImage *)imageLogo title:(NSString *)string ;@endNS_ASSUME_NONNULL_END

SWWaterMarkImage.m

@implementation SWWaterMarkImage-(UIImage *)WaterImageWithImage:(UIImage *)image ImageLogo:(UIImage *)imageLogo title:(NSString *)string { //1.要手动创建一个位图上下文 UIGraphicsBeginImageContext(image.size) ; //2.绘制到内容上下文中 //原始图片渲染 [image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)]; //文字 NSDictionary *attributeDict = @{ NSFontAttributeName : [UIFont systemFontOfSize:20.f], NSForegroundColorAttributeName:[UIColor whiteColor],// NSBackgroundColorAttributeName :[UIColor redColor] } ; CGRect rectSize = [string boundingRectWithSize:CGSizeMake(MAXFLOAT, 30) options:NSStringDrawingUsesDeviceMetrics attributes:attributeDict context:nil] ; CGFloat x = image.size.width - rectSize.size.width - 10 ; CGFloat y = image.size.height - 30 ; [string drawAtPoint:CGPointMake(x, y) withAttributes:attributeDict] ; //logo图片 CGFloat waterW = 30; CGFloat waterH = 30; CGFloat waterX = x - waterW - 10 ; CGFloat waterY = y - 3 ; [imageLogo drawInRect:CGRectMake(waterX, waterY, waterW, waterH)] ; //3.从当前的上下文当中生成一张新的图片 UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext() ; //4.手动创建的上下文一定要手动去销毁掉 UIGraphicsEndImageContext() ; return newImage ;}+(UIImage *)WaterImageWithImage:(UIImage *)image ImageLogo:(UIImage *)imageLogo title:(NSString *)string { return [[self alloc]WaterImageWithImage:image ImageLogo:imageLogo title:string] ;}@end

ViewController.m

#import "ViewController.h"#import "SWWaterMarkImage.h"@interface ViewController ()@property(nonatomic,strong)UIImageView *imageView ;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; //生成一张加水印图片步骤: /* 可以在任何方法中生成图片,不一定在drawRect:方法中生成 1.要手动创建一个位图上下文,创建位图上下文时,要指定大小,指定的大小,决定着生成图片的尺寸是多大 2.把内容绘制到上下文当中 3.从上下文当中生成一张图片,把上下文当中绘制的所有内容合成在一起生成一张跟上下文尺度一样的图片 4.手动创建的上下文一定要手动去销毁掉 */}-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ UIImage *newImage = [SWWaterMarkImage WaterImageWithImage:[UIImage imageNamed:@"18d8bc3eb13533fa65021ddba5d3fd1f40345b8b"] ImageLogo:[UIImage imageNamed:@"logo"] title:@"芜湖亚原子网络科技有限公司"] ; //5.将生成的image显示到imageView上去 self.imageView = [[UIImageView alloc]init] ; self.imageView.frame = CGRectMake(0, 100, 375, 250) ; self.imageView.image = newImage ; [self.view addSubview:self.imageView] ;}@end

感谢你能够认真阅读完这篇文章,希望小编分享的"如何使用iOS实现图片水印与封装"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

上下 上下文 图片 手动 生成 水印 位图 内容 大小 方法 篇文章 封装 文字 原始 下文 代码 作用 图形 字符 字符串 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 花魁咖啡 广州淘业互联网络科技 互联网金融监管科技数据 科技企业和互联网企业 深圳互联网科技公司 中国互联网科技发展 菲比寻常互联网科技 亿人帮互联网科技 深圳卡尔迅互联网科技有限公司怎么样 隆华科技工业互联网 深圳国际航运科技和互联网 中国科技互联网公司收入 花神(南京)互联网科技有限公司 成都互联网科技公司工作好不好 中国科技创新与世界互联网大会 互联网企业科技类企业如何做账 陕西九四连强互联网科技有限公司 河南商务圈互联网科技有限公司 株洲百竞科技的互联网营销顾问 互联网 科技节活动 微视频大赛 鸠鸠互联网科技 互联网科技美容 互联网前沿科技 互联网科技股午盘股票涨跌 成都仁贤领冠互联网科技有限公司 博兴的互联网电子科技公司 互联网汽车科技小镇 深圳育鹏互联网科技有限公司招聘 互联网科技手机排行榜 互联网 科技节活动 微视频大赛
0