图片处理
来源:互联网 发布:淘宝怎么预约快递 编辑:程序博客网 时间:2024/06/05 10:25
捕捉屏幕截图
CALayer实例使用Core Graphics的renderInContext方法可以将视图绘制到图像上下文中以便转化为其他UIImage实例
+(UIImage *) imageFromView: (UIView *)theView { // draw a view's contents into an image context UIGraphicsBeginImageContext(theView.frame.size); [theView.layer renderInContext:context]; UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext(); return theImage; }
UIGraphicsBeginImageContext(CGSize size)创建一个基于位图的上下文(context),并将其设置为当前上下文函数功能与UIGraphicsBeginImageContextWithOptions相同,相当于该方法的opaque参数为NO,scale因子为1.0 而UIGraphicsEndImageContext()方法是移除栈顶的基于当前位图的图形上下文捕捉截取某个区域内屏幕图像
-(UIImage *)imageFromView: (UIView *) theView atFrame:(CGRect)rect { UIGraphicsBeginImageContext(theView.frame.size); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSaveGState(context); UIRectClip(rect); UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext();//[self getImageAreaFromImage:theImage atFrame:rect]; }
从某图片中截图
UIImage *image = [[UIImage alloc] initWithData:data];//大图 CGRect imageRect = CGRectMake(0.0, 0.0, image.size.width, image.size.height);CGSize itemSize = CGSizeMake(w,h); UIGraphicsBeginImageContext(itemSize);UIImage *smallimage = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();
视图添加倒影效果
const CGFloat kReflectPercent = -0.25f;const CGFloat kReflectOpacity = 0.3f;const CGFloat kReflectDistance = 10.0f;+(void)addSimpleReflectionToView:(UIView *)theView {CALayer *reflectionLayer = [CALayer layer];reflectionLayer.contents = [theView layer].contents;reflectionLayer.opacity = kReflectOpacity;reflectionLayer.frame = CGRectMake(0.0f,0.0f,theView.frame.size.width,theView.frame.size.height*kReflectPercent);//倒影层框架设置,其中高度是原视图的百分比CATransform3D transform = CATransform3DTranslate(stransform,0.0f,-(kReflectDistance + theView.frame.size.height),0.0f); reflectionLayer.transform = transform; reflectionLayer.sublayerTransform = reflectionLayer.transform;[[theView layer] addSublayer:reflectionLayer]; }
使用Core Graphics创建倒影
+ (CGImageRef) createGradientImage:(CGSize)size { CGFloat colors[] = {0.0,1.0,1.0,1.0};//在灰色设备色彩上建立一渐变 CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray(); CGContextRef context = CGBitmapContextCreate(nil,size.width,size.height,8,0,colorSpace,kCGImageAlphaNone); CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace,colors,NULL,2); CGColorSpaceRelease(colorSpace); //绘制线性渐变 CGPoint p1 = CGPointZero; CGPoint p2 = CGPointMake(0,size.height); CGContextDrawLinearGradient(context,gradient,p1,p2,kCGGradientDrawsAfterEndLocation); //Return the CGImage CGImageRef theCGImage = CGBitmapContextCreateImage(context);CFRelease(gradient); CGContextRelease(context); return theCGImage; }
实现圆角图片:
1. 普通方法
UIColor *color = [UIColor colorWithRed:0.95 green:0.95 blue:0.95 alpha:0]; [myImage setBackgroundColor:color]; //设置背景透明 myImage.layer.masksToBounds = YES; myImage.layer.cornerRadius = 5.0; myImage.layer.borderWidth = 0.5; myImage.layer.borderColor = [[UIColor grayColor] CGColor];
2. 或者调用方法绘制圆角
/** 返回圆形图片 */- (UIImage *)circleImage { /** NO代表透明 */ UIGraphicsBeginImageContextWithOptions(self.size, NO, 0.0); /** 获得上下文 */ CGContextRef ref = UIGraphicsGetCurrentContext(); /** 添加一个圆 */ CGRect rect = CGRectMake(0, 0, self.size.width, self.size.height); CGContextAddEllipseInRect(ref, rect); /** 裁剪 */ CGContextClip(ref); /** 将图片画上去 */ [self drawInRect:rect]; UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return image;}
两图合成一图
-(UIImage*)addImage:(UIImage *)image1 toImage:(UIImage*)image2 {UIGraphicsBeginImageContext(image1.size); [image1 drawInRect:CGRectMake(0,0,image1.size.width,image1.size.height)]; [image2 drawInRect:CGRectMake(0,0,image2.size.width,image2.size.height)]; UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext(); return resultingImage; }
0 0
- 图片处理
- 处理图片
- 图片处理
- 图片处理
- 图片处理
- 图片处理
- 图片处理
- 图片处理
- 处理图片
- 图片处理
- 图片处理
- 图片处理
- 图片处理
- 图片处理
- 图片处理
- 图片处理
- 图片处理
- 图片处理
- Atitit.词法分析的理论原理 part2
- LeetCode[260]Single Number III
- Atitit.antlr实现词法分析
- Linux 存储速度测试脚本
- 《CSS3实战》笔记--溢出文本省略:text-overflow和文本换行显示:word-wrop
- 图片处理
- storyboard页面转跳
- javascript使用原生ajax的简便方法
- Linux查询子网掩码网关DNS
- unbuntu发热厉害如何处理
- VC开发数据库基础之ADO篇
- UVa 673 - Parentheses Balance
- Dart入门—开发环境
- 实验吧 web 输入密码