这里介绍两种方法:
方法一:添加文字水印,这里说的文字水印是指将开发者定义的文字直接添加到图片上,代码如下:
UIImage *img = [UIImage imageNamed:@"3G_alert.png"]; //需要加水印的图片 CGSize size = self.view.frame.size; //设置上下文(画布)大小 UIGraphicsBeginImageContext(size); //创建一个基于位图的上下文(context),并将其设置为当前上下文 CGContextRef contextRef = UIGraphicsGetCurrentContext(); //获取当前上下文 NSString *title = @"舵手网络"; //需要添加的水印文字 CGContextTranslateCTM(contextRef, 0, self.view.bounds.size.height); //画布的高度 CGContextScaleCTM(contextRef, 1.0, -1.0); //画布翻转 CGContextDrawImage(contextRef, self.view.frame, [img CGImage]); //在上下文种画当前图片 [[UIColor redColor] set]; //上下文种的文字属性 CGContextTranslateCTM(contextRef, 0, self.view.bounds.size.height); CGContextScaleCTM(contextRef, 1.0, -1.0); UIFont *font = [UIFont boldSystemFontOfSize:40]; [title drawInRect:CGRectMake(100, 400, 200, 80) withFont:font]; UIImage *res =UIGraphicsGetImageFromCurrentImageContext(); //从当前上下文种获取图片 UIGraphicsEndImageContext(); //移除栈顶的基于当前位图的图形上下文。 NSArray *savePath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *p = [savePath objectAtIndex:0]; NSLog(@"%@",p); NSString *dataFilePath = [p stringByAppendingPathComponent:@"1.png"]; NSData *imageData = UIImagePNGRepresentation(res); [imageData writeToFile:dataFilePath atomically:YES]; UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; [imageView setImage:res]; [self.view addSubview:imageView];
方法二:添加图片水印,顾名思义,就是两张图片,一张原图,一张水印图片,代码如下:
UIImage *img = [UIImage imageNamed:@"demo.jpg"]; //需要加水印的图片 UIImage *smallImg = [UIImage imageNamed:@"water.png"]; CGSize size = self.view.frame.size; //设置上下文(画布)大小 UIGraphicsBeginImageContext(size); //创建一个基于位图的上下文(context),并将其设置为当前上下文 CGContextRef contextRef = UIGraphicsGetCurrentContext(); //获取当前上下文 CGContextTranslateCTM(contextRef, 0, self.view.bounds.size.height); //画布的高度 CGContextScaleCTM(contextRef, 1.0, -1.0); //画布翻转 CGContextDrawImage(contextRef, self.view.frame, [img CGImage]); //在上下文种画当前图片 CGContextDrawImage(contextRef, CGRectMake(100, 50, 200, 80), [smallImg CGImage]); UIImage *res = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); //移除栈顶的基于当前位图的图形上下文。 NSArray *savePath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *p = [savePath objectAtIndex:0]; NSLog(@"%@",p); NSString *dataFilePath = [p stringByAppendingPathComponent:@"1.png"]; NSData *imageData = UIImageJPEGRepresentation(res, 1.0); [imageData writeToFile:dataFilePath atomically:YES]; UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; [imageView setImage:res]; [self.view addSubview:imageView];
相关推荐
在iOS开发中,为图片添加水印是一项常见的需求,无论是为了保护版权,还是为了增加视觉效果。本教程将深入探讨如何在iOS应用中实现图片的文本水印和透明水印功能。 首先,我们需要理解基本概念。水印通常是指在图片...
在移动应用开发中,给用户提供拍照、从相册选择照片并添加水印的功能是一项常见的需求。这个功能可以用于个性化分享、版权保护或者品牌宣传等多种场景。以下是对这一功能的详细解释和实现步骤。 首先,我们需要了解...
拍照后,我们可以在图片上添加水印。这通常通过处理Bitmap对象完成,可以使用Canvas类的drawText或drawBitmap方法来绘制文字或图像。水印的位置、大小、透明度等属性可以根据需求调整。完成加水印后,将处理后的...
在FFmpeg中,可以使用`libavfilter`模块的`drawtext`过滤器来添加文字水印,或者使用`movie`过滤器添加图片水印。在iOS应用中,可以先创建一个包含水印的图像,然后使用`AVVideoComposition`和`...
- **安全性**:考虑到隐私和安全,可能需要对图片进行加密或者添加水印。此外,上传的图片路径和URL也需要妥善管理,避免泄露。 - **文件上传API设计**:服务器端需要提供一个接受图片文件的接口,通常使用...
此外,为了提供更好的用户体验,截取的屏幕图片可以进行裁剪、添加水印等后期处理。 总的来说,手写签名和截屏保存文件在IT应用中是一个集硬件交互、图形处理、用户界面设计于一体的复杂过程。开发者需要熟练掌握...
Android可以使用`MediaStore`或`ContentProvider`来保存图片,iOS则使用`UIImageWriteToSavedPhotosAlbum`。分享功能通常涉及集成社交平台SDK,如微信、QQ等,调用它们的分享接口。 7. **权限管理**:在Android 6.0...
一些高级用户可能需要自定义热键、设置自动保存路径、添加水印或自动上传到云端。这通常需要借助高级截图工具或编程技巧来实现,例如使用AutoHotkey脚本语言创建自定义截图快捷方式。 总的来说,无论你是Windows、...
简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印 util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,...
通过调用ScreenCapture.CaptureScreenshot("filename.png"),开发者可以在运行时生成一个截图并保存到指定路径。这个函数可以结合其他条件判断,实现动态截图功能。 6. **高质量和高分辨率截图** 要实现高分辨率...