iOS中常见的视图和图片处理示例详解
前言
众所周知在开发中不可避免的会遇到一些图片和视图的处理,我这里总结的这些只是我遇到的一些,以供下次使用查看。下面话不多说了,来一起看看详细的介绍吧。
图片的旋转
是UIImage的扩展类,直接使用UIImage的对象调用即可
UIImage
#import#import @implementationUIImage(ImageRotate) -(UIImage*)imageRotateIndegree:(float)degree{ //1.image-》context size_twidth=(size_t)(self.size.width*self.scale); size_theight=(size_t)(self.size.height*self.scale); size_tbytesPerRow=width*4;//表明每行图片数据字节 CGImageAlphaInfoalphaInfo=kCGImageAlphaPremultipliedFirst;//alpha //配置上下文参数 CGContextRefbmContext=CGBitmapContextCreate(NULL,width,height,8,bytesPerRow,CGColorSpaceCreateDeviceRGB(),kCGBitmapByteOrderDefault|alphaInfo); if(!bmContext){ returnnil; } CGContextDrawImage(bmContext,CGRectMake(0,0,width,height),self.CGImage); //2旋转 UInt8*data=(UInt8*)CGBitmapContextGetData(bmContext); vImage_Buffersrc={data,height,width,bytesPerRow}; vImage_Bufferdest={data,height,width,bytesPerRow}; Pixel_8888bgColor={0,0,0,0}; vImageRotate_ARGB8888(&src,&dest,NULL,degree,bgColor,kvImageBackgroundColorFill); //3context-》UIImage CGImageRefrotateImageref=CGBitmapContextCreateImage(bmContext); UIImage*rotateImage=[UIImageimageWithCGImage:rotateImagerefscale:self.scaleorientation:self.imageOrientation]; returnrotateImage; } @end
图片的裁剪
依然是UIImage的扩展类,直接使用UIImage的对象调用即可
UIImage
@implementationUIImage(ImageCut) -(UIImage*)ImageCutSize:(CGRect)rect{ CGImageRefsubImageref=CGImageCreateWithImageInRect(self.CGImage,rect); CGRectsmallRef=CGRectMake(0,0,CGImageGetWidth(subImageref),CGImageGetHeight(subImageref)); UIGraphicsBeginImageContext(smallRef.size); CGContextRefcontext=UIGraphicsGetCurrentContext(); CGContextDrawImage(context,smallRef,subImageref); UIImage*image=[UIImageimageWithCGImage:subImageref]; UIGraphicsEndImageContext(); returnimage; } @end
获取截屏
截屏是UIView的扩展类
UIView
@implementationUIView(imageScreenShot) -(UIImage*)imageScreenShot { UIGraphicsBeginImageContext(self.frame.size); [self.layerrenderInContext:UIGraphicsGetCurrentContext()]; UIImage*imageNew=UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); returnimageNew; } @end
使用方法
UIView
-(void)imageScreen{ UIImage*imageNew=[self.viewimageScreenShot]; UIImageWriteToSavedPhotosAlbum(imageNew,nil,nil,nil);//直接保存在相册里,要获取相册权限 }
图片比例处理
依然是UIImage的扩展类
UIImage
@implementationUIImage(imageScaleSize) -(UIImage*)scaleImage:(UIImage*)imagetoScale:(float)scaleSize{ UIGraphicsBeginImageContext(CGSizeMake(image.size.width*scaleSize,image.size.height*scaleSize)); [imagedrawInRect:CGRectMake(0,0,image.size.width*scaleSize,image.size.height*scaleSize)]; UIImage*scaledImage=UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); returnscaledImage; } @end
view添加圆角
这里是UIView的扩展类,适用于所有的View,可以设置添加的位置
UIView
@implementationUIView(LSCore) /** 设置部分圆角绝对布局 @paramcorners需要设置为圆角的角UIRectCornerTopLeft|UIRectCornerTopRight @paramradii需要设置的圆角大小CGSizeMake(5.0,5.0) */ -(void)addRoundedCorners:(UIRectCorner)cornerswithRadii:(CGSize)radii{ UIBezierPath*rounded=[UIBezierPathbezierPathWithRoundedRect:self.boundsbyRoundingCorners:cornerscornerRadii:radii]; CAShapeLayer*shape=[[CAShapeLayeralloc]init]; [shapesetPath:rounded.CGPath]; self.layer.mask=shape; } /** 设置部分圆角相对布局 @paramcorners需要设置为圆角的角UIRectCornerTopLeft|UIRectCornerTopRight @paramradii需要设置的圆角大小CGSizeMake(5.0,5.0) @paramrect需要设置的圆角view的rect */ -(void)addRoundedCorners:(UIRectCorner)cornerswithRadii:(CGSize)radiiviewRect:(CGRect)rect{ UIBezierPath*rounded=[UIBezierPathbezierPathWithRoundedRect:self.boundsbyRoundingCorners:cornerscornerRadii:radii]; CAShapeLayer*shape=[[CAShapeLayeralloc]init]; [shapesetPath:rounded.CGPath]; self.layer.mask=shape; } @end
使用方法以UIImageView为例
UIImage
[imageaddRoundedCorners:UIRectCornerTopLeft|UIRectCornerTopRightwithRadii:CGSizeMake(20.0,20.0)];
将颜色转为图片
UIImage
-(UIImage*)ImageForColor:(UIColor*)color{ CGRectrect=CGRectMake(0.0f,0.0f,10,10); UIGraphicsBeginImageContext(rect.size); CGContextRefcontext=UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(context,[colorCGColor]); CGContextFillRect(context,rect); UIImage*image=UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); returnimage; }
图片添加系统滤镜
UIImage
-(UIImage*)blurryImage:(UIImage*)image withBlurLevel:(CGFloat)blur{ CIContext*context=[CIContextcontextWithOptions:nil]; CIImage*inputImage=[CIImageimageWithCGImage:image.CGImage]; CIFilter*filter=[CIFilterfilterWithName:@"CIGaussianBlur" keysAndValues:kCIInputImageKey,inputImage, @"inputRadius",@(blur), nil]; CIImage*outputImage=filter.outputImage; CGImageRefoutImage=[contextcreateCGImage:outputImage fromRect:[outputImageextent]]; return[UIImageimageWithCGImage:outImage]; }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。