怎么在iOS中实现一个图片水印功能

  介绍

怎么在iOS中实现一个图片水印功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

<强>核心代码:

将字符串添加到图形上下文的方法   安康;(空白)drawAtPoint:(CGPoint) point  withAttributes: (nullable  NSDictionary< NSAttributedStringKey,, id>, *) attrs   安康;(void)图形:(CGRect中)rect  withAttributes: (nullable  NSDictionary< NSAttributedStringKey,, id>, *) attrs   将字符串添加到图形上下文的方法   安康;(空白)drawAtPoint:(CGPoint)点,,,,,,,,,,,,,,,   ,=//,mode  kCGBlendModeNormal, alpha  1.0=,   安康;(空白)drawAtPoint:(CGPoint) point  blendMode: (CGBlendMode) blendMode α:α(CGFloat);   ,   安康;(void)图形:(CGRect中)矩形;,,,,,,,,,,,,,,,   ,=//,mode  kCGBlendModeNormal, alpha  1.0=,   安康;(void)图形:(CGRect中)rect  blendMode: (CGBlendMode) blendMode α:(CGFloat)α;

<>强基本步骤:

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

<强>封装的实例代码:

SWWaterMarkImage。h

# import  & lt; UIKit/UIKit.h>   ,   NS_ASSUME_NONNULL_BEGIN   ,   @interface  SWWaterMarkImage :用户界面图像   ——(UIImage  *) WaterImageWithImage:(UIImage  *) image  ImageLogo: (UIImage  *) imageLogo 标题:(NSString  *) string ;   + (UIImage  *) WaterImageWithImage:(UIImage  *) image  ImageLogo: (UIImage  *) imageLogo 标题:(NSString  *) string ;   @end   ,   NS_ASSUME_NONNULL_END

SWWaterMarkImage。m

@implementation  SWWaterMarkImage   ——(UIImage  *) WaterImageWithImage:(UIImage  *) image  ImageLogo: (UIImage  *) imageLogo 标题:(NSString  *) string  {   ,,//1。要手动创建一个位图上下文   ,UIGraphicsBeginImageContext (image.size),;   ,,//2。绘制到内容上下文中   ,//原始图片渲染   ,[image 图形: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),选择:NSStringDrawingUsesDeviceMetrics 属性:attributeDict 上下文:nil),;   ,CGFloat  x =, image.size.width 作用;rectSize.size.width 作用;10,;   ,CGFloat  y =, image.size.height 作用;30,;   ,(string  drawAtPoint: CGPointMake (x, y), withAttributes: attributeDict],;   ,,   ,//标志图片   ,CGFloat  waterW =, 30;   ,CGFloat  waterH =, 30;   ,CGFloat  waterX =, x 作用;waterW 作用;10,;   ,CGFloat  waterY =, y 作用;3,;   ,[imageLogo 图形:CGRectMake (waterX,水汪汪的,,waterW,, waterH)],;   ,//3。从当前的上下文当中生成一张新的图片   ,UIImage  * newImage =, UIGraphicsGetImageFromCurrentImageContext (),;   ,,//4。手动创建的上下文一定要手动去销毁掉   ,UIGraphicsEndImageContext (),;   ,,   ,return  newImage ;   }   ,   + (UIImage  *) WaterImageWithImage:(UIImage  *) image  ImageLogo: (UIImage  *) imageLogo 标题:(NSString  *) string  {   ,return  [[self  alloc] WaterImageWithImage: image  ImageLogo: imageLogo 标题:字符串),;   }   @end

ViewController。m

# import “ViewController.h"   # import “SWWaterMarkImage.h"   @interface  ViewController  ()   @ property(原子、强)UIImageView  * imageView ;   @end   ,   @implementation  ViewController   ,   安康;(空白)viewDidLoad  {   ,[super  viewDidLoad];   ,,   ,//生成一张加水印图片步骤:   ,/*   ,,可以在任何方法中生成图片,不一定在绘制矩形:方法中生成   1 .要才能手动创建一个位图上下文,创建位图上下文时,要指定大小,指定的大小,决定着生成图片的尺寸是多大   2。才能把内容绘制到上下文当中   3。才能从上下文当中生成一张图片,把上下文当中绘制的所有内容合成在一起生成一张跟上下文尺度一样的图片   4 .手才能动创建的上下文一定要手动去销毁掉   ,*/}   null   null   null   null   null   null   null   null   null   null   null   null

怎么在iOS中实现一个图片水印功能