UIImage图片处理,旋转、截取、平铺、缩放等操作
转载
有时候我们需要处理图片,比如改变大小,旋转,截取等等,所以今天说一说图片处理相关的一些操作。
本文所说的方法都是写在UIImage的Category中,这样使用起来也方便;由于代码太多,这里就不贴具体实现代码了,大家可以去我的Github查看demo,效果如下:

颜色相关
1.根据颜色生成纯色图片
就是根据制定的颜色生成一张纯色的图片
1
|
+ (UIImage *)imageWithColor:(UIColor *)color;
|
使用方法,比如设置UIImageView的图片为红色纯图片:
1
|
self.imageView.image = [UIImage imageWithColor:[UIColor redColor]];
|
2.取图片上某一像素的颜色
有时候我们需要获取图片上的某一点的颜色,比如画板应用选择画笔颜色的时候,其实是在一张有所有颜色的图片上点击选择实现的。
需要注意的是这里要传的参数point是相对于图片上的点。
1
|
- (UIColor *)colorAtPixel:(CGPoint)point;
|
使用方法,比如我们在图片上加个tap手势,然后在响应方法里面这样写就可以了:
1
2
3
|
- ( void )handleTap:(UITapGestureRecognizer *)tap
{ CGPoint point = [tap locationInView:tap.view]; UIImage *image = self.imageView.image; CGPoint pointInImage = CGPointMake(point.x * image.size.width / self.imageView.frame.size.width, point.y * image.size.height / self.imageView.frame.size.height); self.view.backgroundColor = [image colorAtPixel:pointInImage];
}
|
3.获得灰度图
获取一张彩色图片的黑白图片
1
|
- (UIImage *)convertToGrayImage;
|
使用方法:
1
|
self.imageView.image = [image convertToGrayImage];
|
旋转相关
1.纠正图片的方向
当我们需要读取相册的图片,发现相册里面的方向和展示出来的图片的方向不一样,这时候就要矫正方向了。
1
|
- (UIImage *)fixOrientation;
|
使用:
1
|
self.imageView.image = [image fixOrientation];
|
2.按给定的方向旋转图片
在做图片处理工具的时候,我们可能需要旋转图片。
这个方法的参数是系统枚举UIImageOrientation。
1
2
3
4
5
6
7
8
9
10
|
typedef NS_ENUM(NSInteger, UIImageOrientation) { UIImageOrientationUp,
UIImageOrientationDown,
UIImageOrientationLeft,
UIImageOrientationRight,
UIImageOrientationUpMirrored,
UIImageOrientationDownMirrored,
UIImageOrientationLeftMirrored,
UIImageOrientationRightMirrored,
- (UIImage*)rotate:(UIImageOrientation)orient;
|
使用,比如顺时针旋转180度:
1
|
self.imageView.image = [image rotate:UIImageOrientationDown];
|
3.垂直翻转
其实就是上面的方法传UIImageOrientationDownMirrored参数。
1
|
- (UIImage *)flipVertical;
|
4.水平翻转
其实就是传UIImageOrientationUpMirrored参数。
1
|
- (UIImage *)flipHorizontal;
|
5.将图片旋转degrees角度
传入一个自定义的角度。
1
|
- (UIImage *)imageRotatedByDegrees:(CGFloat)degrees;
|
6.将图片旋转radians弧度
1
|
- (UIImage *)imageRotatedByRadians:(CGFloat)radians;
|
生成图相关
1.截取image对象rect区域内的图像
1
|
- (UIImage *)subImageWithRect:(CGRect)rect;
|
2.压缩图片至指定尺寸
1
|
- (UIImage *)rescaleImageToSize:(CGSize)size;
|
3.压缩图片至指定像素
1
|
- (UIImage *)rescaleImageToPX:(CGFloat )toPX;
|
4.生成一个size大小的平铺图片
1
|
- (UIImage *)getTiledImageWithSize:(CGSize)size;
|
5..UIView转化为UIImage
1
|
+ (UIImage *)imageFromView:(UIView *)view;
|
6.将两个图片生成一张图片
firstImage在下面,secondImage在上面
1
|
+ (UIImage*)mergeImage:(UIImage*)firstImage withImage:(UIImage*)secondImage;
|
Gif相关
将一个Gif直接设置为UIImageView的image就可以显示动态图了。
1
|
+ (UIImage *)animatedImageWithAnimatedGIFData:(NSData *)theData; + (UIImage *)animatedImageWithAnimatedGIFURL:(NSURL *)theURL;
|
使用:
1
|
NSString *path = [[NSBundle mainBundle] pathForResource:@ "gif" ofType:@ "gif" ];self.imageView.image = [UIImage animatedImageWithAnimatedGIFURL:[NSURL fileURLWithPath:path]];
|
希望能帮到大家,持续更新中。
欢迎关注 我 或者我的专题:iOS技术交流。
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。