iOS 为图片 照片 添加水印 文字及图片

港控/mmm° 2023-03-06 05:10 64阅读 0赞

上午刚接到项目一个新的小需求,给上传的图片添加水印。

就希望小组长不断给我新的小需求,一年了自己成长的太慢了,这么好的公司,这么好的环境,这么好的条件,这么差的我。

在毕业的第一家公司的项目中就了解过绘图,百度了水印的相关技术看到和UIGraphicsBeginImageContext相关似曾相识,下面的方法可以直接使用,只需要传入你要加上水印的图片以及要显示的文字。

-(UIImage *)waterMarkImage:(UIImage *)img withName:(NSString *)name

{

  1. NSString\* mark = name;
  2. int w = img.size.width;
  3. int h = img.size.height;
  4. UIGraphicsBeginImageContext(img.size);//UIGraphicsBeginImageContext

创建一个基于位图的上下文(context),并将其设置为当前上下文(context)

  1. \[img drawInRect:CGRectMake(0, 0, w, h)\];
  2. NSDictionary \*attr = @\{
  3. NSFontAttributeName: \[UIFont boldSystemFontOfSize:22\], //设置字体
  4. NSForegroundColorAttributeName : \[UIColor redColor
  5. \] //设置字体颜色
  6. \};

// [mark drawInRect:CGRectMake(0, 10, 80, 32) withAttributes:attr]; //左上角

// [mark drawInRect:CGRectMake(w - 80, 10, 80, 32) withAttributes:attr]; //右上角

  1. \[mark drawInRect:CGRectMake(w - 180, h - 32 - 10, 180, 32) withAttributes:attr\]; //右下角

// [mark drawInRect:CGRectMake(0, h - 32 - 10, 80, 32) withAttributes:attr]; //左下角

  1. UIImage \*newImage = UIGraphicsGetImageFromCurrentImageContext();
  2. UIGraphicsEndImageContext();
  3. return newImage;

}

像下面这样使用:

//添加水印

UIImage *newImage = [self watermarkImage:[UIImage imageNamed:@”xiangrikui.jpg”] withName:@”测试文字”];

UIImageView *image = [[UIImageView alloc]initWithFrame:CGRectMake(50, 200, 300, 200)];

image.image = new;

[self.view addSubview:image];

补充:如果要加水印图片和加文字一个道理~

有没有和我一样 很惰性 但思想很积极的行动派矮子,一定要克服,14年毕业于工作开始就知道要多实践 多敲代码 不能只看,结果到现在还没改,所以进步慢,第一家公司我的师父告诉我如果能借公司的项目(关于银行的报表)。将iOS绘图相关的彻底搞明白将来一定不错,结果,结果是一本关于绘图的技术书看了两遍才明白,看了三四遍才记住,看了五六遍才会用,但是中间没搞开发这两年又都忘记了。

补充:功能实现后,时隔几天发现水印上的文字很模糊,对比如下,原因如下watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTEyMTc4MzQ_size_16_color_FFFFFF_t_70

UIGraphicsBeginImageContext(img.size);

UIGraphicsBeginImageContextWithOptions(img.size,NO,0.0f);

这两个方法都是绘图时候用的方法,功能上这两个方法是一样的。但是就图片质量上这两个参数还是有一定区别的。

第一个参数是想要渲染的图片的尺寸;

第二个参数用来指定所生成图片的背景是否为不透明,指定为YES得到的图片背景将会是黑色,反之NO表示是透明的;

第三个参数表示位图的缩放比例,如果设置为 0,表示让图片的缩放因子根据屏幕的分辨率而变化。和 [UIScreen mainScreen].scale相等的。

我在开始是用第一个方法 文字就很模糊,第二个方法文字就正常了。

发表评论

表情:
评论列表 (有 0 条评论,64人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java给图片添加文字水印

    闲着没事,研究了下图片水印的事儿,图片水印虽然恶心,而且大大的影响了图片的美观,试想一下,一张美女的性感写真照,下方来了个大大的水印“XXXX所有”,看着那猥琐的文字水印,是不