一、 为图片增加图层 此类使用Categorie
/**
* @brief 为图像增加颜色覆盖.
*
* @param color 图层的颜色
* @param level 图层颜色的透明度 0 - 1 图层越来越深
*
* @return UIImage 增加图层后的图像.
*/
-(UIImage *)imageWithColor:(UIColor*)color level:(CGFloat)level;
方法实现:
-(UIImage*)imageWithColor:(UIColor*)color level:(CGFloat)level
{
CGRect imageRect = CGRectMake(0.0f, 0.0f, self.size.width, self.size.height);
UIGraphicsBeginImageContextWithOptions(imageRect.size, NO, self.scale);
[self drawInRect:imageRect];
// 获取绘画的上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
// 填充色
CGContextSetFillColorWithColor(ctx, [color CGColor]);
// 填充色的透明度
CGContextSetAlpha(ctx, level);
// 混合模式使图片和绘制的颜色混合
CGContextSetBlendMode(ctx, kCGBlendModeSourceAtop);
// 填充的矩形大小
CGContextFillRect(ctx, imageRect);
CGImageRef imageRef = CGBitmapContextCreateImage(ctx);
UIImage *handleImage = [UIImage imageWithCGImage:imageRef
scale:self.scale
orientation:self.imageOrientation];
CGImageRelease(imageRef);
UIGraphicsEndImageContext();
return handleImage;
}
二、使用coreImage 来生产模糊效果
/**
* @brief 生成模糊效果的图<span style="font-family: Arial, Helvetica, sans-serif;">像</span><span style="font-family: Arial, Helvetica, sans-serif;">.</span>
*
* @param sourceImage 需要处理的图<span style="font-family: Arial, Helvetica, sans-serif;">像</span>
* @param blurFloat 模糊系数 范围 0 - 无穷 值越大越模糊 越来越白
*
* @return UIImage 处理后的图像
*/
-(UIImage *)blurImage:(UIImage *)sourceImage blurFloat:(float)blurFloat
{
// 创建coreImage上下文
CIContext *context = [CIContext contextWithOptions:nil];
CIImage *souImage = [CIImage imageWithCGImage:sourceImage.CGImage];
// 初始化高斯模糊过滤器
CIFilter *blurFilter = [CIFilter filterWithName:@"CIGaussianBlur"];
// 把需要处理的图片放入过滤器中
[blurFilter setValue:souImage forKeyPath:kCIInputImageKey];
// 设置模糊的值
[blurFilter setValue:@(blurFloat) forKeyPath:@"inputRadius"];
// 从滤器中中取出
CIImage *blurImage = [blurFilter valueForKey:kCIOutputImageKey];
// 生成<span style="color: rgb(61, 29, 129); font-family: Arial, Helvetica, sans-serif;">图像</span>并释放内存
CGImageRef cgImage = [context createCGImage:blurImage fromRect:[souImage extent]];
UIImage *bluredImage = [UIImage imageWithCGImage:cgImage];
CGImageRelease(cgImage);
return bluredImage;
}
三、图片转换成其他格式
// img 为需要转换的图像
NSData *data = UIImagePNGRepresentation(img);
NSString *imgStr = [data base64Encoding];
UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
// 保存到相册后回调
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo
{
if (error){
// 成功
}else
{
// 失败
}
}
五、图像的圆角处理
/**
* @brief 处理图像的圆角.
*
* @param image 所要绘制圆角的图像
* @param cornerRadius 圆角大小 0 为正圆 值越大圆角越小
*
* @return UIImage 圆角处理后的图像.
*/
-(UIImage *) circleImage:(UIImage*) image withParam:(CGFloat) cornerRadius
{
// 开始绘制图像上下文
UIGraphicsBeginImageContext(image.size);
// 获取图像上下文
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 2);
// 绘制颜色
CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor);
// 绘制所需的矩形
CGRect rect = CGRectMake(cornerRadius, cornerRadius, image.size.width - cornerRadius * 2.0f, image.size.height - cornerRadius * 2.0f);
// 在矩形中绘制椭圆
CGContextAddEllipseInRect(context, rect);
// 裁剪
CGContextClip(context);
// 绘画裁剪后的图像
[image drawInRect:rect];
// 关闭画笔路径
CGContextStrokePath(context);
// 从图像的上下文中获取图片
UIImage *newimg = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newimg;
}