图片处理 旋转 平铺 , 截取

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

1.gif

颜色相关

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,             // default orientation
     UIImageOrientationDown,           // 180 deg rotation
     UIImageOrientationLeft,           // 90 deg CCW
     UIImageOrientationRight,          // 90 deg CW
     UIImageOrientationUpMirrored,     // as above but image mirrored along other axis. horizontal flip
     UIImageOrientationDownMirrored,   // horizontal flip
     UIImageOrientationLeftMirrored,   // vertical flip
     UIImageOrientationRightMirrored,  // vertical flip};
 
- (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
/** 用一个Gif生成UIImage,传入一个GIFData */ + (UIImage *)animatedImageWithAnimatedGIFData:(NSData *)theData; /** 用一个Gif生成UIImage,传入一个GIF路径 */ + (UIImage *)animatedImageWithAnimatedGIFURL:(NSURL *)theURL;

使用:

1
NSString *path = [[NSBundle mainBundle] pathForResource:@ "gif"  ofType:@ "gif" ];self.imageView.image = [UIImage animatedImageWithAnimatedGIFURL:[NSURL fileURLWithPath:path]]; //或者self.imageView.image = [UIImage animatedImageWithAnimatedGIFData:[NSData dataWithContentsOfFile:path]];

 

转载于:https://www.cnblogs.com/yuwei0911/p/5895709.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值