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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。