关键词:
有时候我们需要处理图片,比如改变大小,旋转,截取等等,所以今天说一说图片处理相关的一些操作。
本文所说的方法都是写在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先上效果图源码单点拖动图片对图片进行平移操作。双手缩放图片大小和旋转图片到一定的角度。图片缩放的时候不能大于最大的缩放因子和小于最小的缩放因子。大于最大缩放因子或者小于最小缩放因子需要对图像... 查看详情