uiimage图片处理,旋转截取平铺缩放等操作

brave-sailor brave-sailor     2022-08-06     540

关键词:

有时候我们需要处理图片,比如改变大小,旋转,截取等等,所以今天说一说图片处理相关的一些操作。
本文所说的方法都是写在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,            // 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]];

希望能帮到大家,持续更新中。
欢迎关注 或者我的专题:iOS技术交流

vue图片浏览组件v-viewer,支持旋转缩放翻转等操作(代码片段)

v-viewer用于图片浏览的Vue组件,支持旋转、缩放、翻转等操作,基于viewer.js。从0.x迁移你需要做的唯一改动就是手动引入样式文件:1import‘viewerjs/dist/viewer.css‘ 安装使用npm命令安装1npminstallv-viewer 使用引入v-viewer及必需的... 查看详情

swiftui基础-image图片(代码片段)

...SwiftUI中,使用Image渲染图片,Image可以加载资源包,系统图标,UIImage等图片资源.基本用法1.从资源包内加载图片Image("cat")2.加载UIImage图片Image(uiImage:UIImage(named:"dog")!)3.加载苹果的SFSymbolsIconImage(systemName:"cloud.heavyrain.fill"... 查看详情

创建 UIImage 抠图

】创建UIImage抠图【英文标题】:CreateUIImagecutout【发布时间】:2012-05-0913:53:50【问题描述】:我有一个UIView包含2个UIImageViews-一个框架和框架后面的图片。框架不是矩形-它是不规则的形状。用户可以操作框架后面的图片(缩放、... 查看详情

如何在 UIImageView 中居中缩放(旋转)UIImage

】如何在UIImageView中居中缩放(旋转)UIImage【英文标题】:Howtocenterscale(rotate)aUIImageinaUIImageView【发布时间】:2013-03-0720:12:39【问题描述】:我需要仅使用CGAffineTransform在UIImageView中使用contentModeUIViewContentModeTopLeft居中和缩放UIImage... 查看详情

androidbitmap详解

...及网络加载等方式。使用BitmapFactory.decodeResource方式加载图片如果要经过缩放,该缩放是在java层进行的,效率比较低,会消耗java层的内存,因此如果大量使用会导致OOM。BitmapFactory.decodeStream一般用于二进制文件图片的读取。从网... 查看详情

java操作图片进行缩放旋转翻转加水印(代码片段)

目录1纯原生手写图片操作工具类2Hutool操作图片3谷歌开源框架Thumbnailator4总结1纯原生手写图片操作工具类importjava.awt.Dimension;importjava.awt.Graphics2D;importjava.awt.Image;importjava.awt.Rectangle;importjava.awt.image.BufferedImage;public 查看详情

fresco二三事:图片处理之旋转缩放裁剪切割图片(代码片段)

关于Fresco加载图片的处理,例如旋转、裁剪切割图片,在官方文档也都有提到,只是感觉写的不太详细,正好最近项目里有类似需求,所以分享一些使用小tip,后面的朋友就不用再走弯路浪费时间了。࿰... 查看详情

图片处理(代码片段)

说明:通常对图片的操作有:缩放、旋转、翻转、裁剪、滤镜、画图等。扩展库:PIL,只支持py2,需要安装pillow库之后才能支持py3安装:pipinstallpillow预备知识:颜色:R(红)、G(绿)、B(蓝)、A(透明)坐标:(0,0)坐标在图... 查看详情

图片处理-opencv-3.图像缩放、旋转、翻转、平移

参考技术Aresult=cv2.resize(src,dsize[,result[.fx[,fy[,interpolation]]]])图像旋转主要调用getRotationMatrix2D()函数和warpAffine()函数实现M=cv2.getRotationMatrix2D(旋转中心,旋转度数,scale)rotated=cv2.warpAffine(原始图像,旋转参数,原始图像宽高)dst=cv2.flip(src,fli... 查看详情

swift-实现图片(uiimage)的水平翻转(镜像),垂直翻转

参考技术ASwift-实现图片(UIImage)的水平翻转(镜像),垂直翻转有时候我们需要对图片(UIImage)进行垂直翻转(上下翻转),或者水平翻转处理(即镜像处理)。如下图:通常有两种方式。1,实现原理UIImage有个属性叫imageOrientati... 查看详情

前端图像处理指南(代码片段)

...为我们提供了一块画布,让前端也有了操作位图的功能:图片旋转、缩放、滤镜、压缩等都可以通过JS来实现。图像基本处理通过设置drawImage参数可以实现图片绘制、缩放、拉伸和裁剪等操作(注意canvas无法绘制体积过大图片,否... 查看详情

android如何对viewpager里面的图片进行缩放

...个相册浏览的功能,可以左右滑动和手势放大,就像下面图片一样的,我添加了四个按钮,放大、缩小、和左右旋转,现在的问题是不知道我想要的这四个功能如何实现,请大神们帮帮忙吧!跟ViewPager没有关系。对图片的操作是... 查看详情

java图片缩略图裁剪水印缩放旋转压缩转格式-thumbnailator图像处理(代码片段)

 前言      java开发中经常遇到对图片的处理,JDK中也提供了对应的工具类,不过处理起来很麻烦,Thumbnailator是一个优秀的图片处理的开源Java类库,处理效果远比JavaAPI的好,从API提供现有的图像文件和图像对象... 查看详情

opencv图像增强,旋转平移缩放仿射等变化后新坐标计算(代码片段)

文章目录一、旋转二、缩放三、平移四、仿射五、高斯噪声六、椒盐噪声一、旋转importcv2importnumpyasnp"""旋转后图片返回"""defdumpRotateImage(img,degree):#图片,角度height,width=img.shape[:2]heightNew=heightwidthNew& 查看详情

对图片进行特效处理

##对图片进行特效处理(熟悉)*首先定义一个矩阵对象 Matrixmt=newMatrix();*缩放效果 //x轴缩放1倍,y轴缩放0.5倍mt.setScale(1,0.5f); *旋转效果 //以copyBm.getWidth()/2,copyBm.getHeight()/2点为轴点,顺时旋转30度mt.setRotate(30,copyBm.ge... 查看详情

html5图像旋转缩放并上传

普通css的旋转缩放只是样式发生旋转,图片本质上还是没有旋转缩放的,想要图片本质旋转或者缩放,需要借助canvas的图像生成能力以图像旋转90度并且缩放0.5倍为例思路获取图片元素(对象),这里也可以处理视频(video)构建画布... 查看详情

nodejs使用jimp实现图片处理

参考技术A在开发中,图片处理是逃不开的一个问题。jimp插件可以非常方便的实现图片的一些常见操作。jimp插件支持常见的图片格式:使用read方法把图片资源进行读取。读取之后可以使用jimp提供的API对图片做更多的操作。原图... 查看详情

android自定义控件之可平移、缩放、旋转图片控件

参考技术A先上效果图源码单点拖动图片对图片进行平移操作。双手缩放图片大小和旋转图片到一定的角度。图片缩放的时候不能大于最大的缩放因子和小于最小的缩放因子。大于最大缩放因子或者小于最小缩放因子需要对图像... 查看详情