图片处理旋转平铺,截取

ooooooo ooooooo     2022-08-06     377

关键词:

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

 

js处理图片平铺问题

background: url("../../../assets/image/center.png") no-repeat;//让图片不平铺  overflow: hidden;//超出部分隐藏  background-size: cover;//让图片最大化 查看详情

ios8中怎样旋转和裁剪相片

iOS8的拍照功能已经很强大了,其实在图片的处理方面也很强,当我们拍了相片想美化一下,iOS8中怎样旋转和裁剪相片呢?【iOS8如何旋转并裁剪图片】 1、进入“照片”应用后点击打开一张图片,再点击右上角“编辑”文字按... 查看详情

图像处理那些算法

...图像的对称功能水平镜像变换:垂直镜像变换:图片裁剪借助get(gca,‘currentPoint’)获取鼠标点击的位置,从而得到鼠标按下和松开的两个位置的坐标。将这两个点的位置提取出来去截取图片。 查看详情

golang图片处理水印去除

参考技术A1.平铺水印图像一般来说,水印图会比要加载的图片要小很多,所以我们采用的方式一般是把水印图片平铺在现有图像上。将水印图片铺满整个屏幕,每个水印之间保留一些像素点。具体思路为1.获取原图尺寸2.获取水印图... 查看详情

javabufferimage图片处理(获取宽高图片截取转换灰度图)(代码片段)

JavaBufferImage图片处理(获取宽高、截取、转换灰度图)1.效果图2.源码参考这篇博客将介绍如何使用Java读取图片为byte[]数组,或者BufferedImage及互相转换,并进行了转换图片为灰度图,截取部分区域等;1.效... 查看详情

css布局:背景图片设置不平铺,结果平铺了;啥情况?只有在火狐下正常,其他浏览器平铺。字幕d家居这个

没看见你的css代码,我只能猜测一下,你说背景图片设置了不平铺,会不会有误区,比如你没有设置背景图片是不是平铺,就以为是设置了不平铺,因为你不设置是否平铺,默认是横向纵向平铺。你一定要写background-repeat:no-repeat... 查看详情

javapdfitext水印怎么做到汉字水印平铺或者换行不想每页只插入一行水印

参考技术A//仅设置一个图片实例对象,整个PDF文档只应用一个图片对象,极大减少因为增加图片水印导致PDF文档大小增加ImagewaterMarkImage=null;//这里是图片对象,if(waterMarkImage==null)waterMarkImage=Image.getInstance(path);//path根据自己的实际... 查看详情

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

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

图片处理

...为用户操作后获取到的2.选区大小为240*240,显示时选区与图片中心重合3.该函数在处理旋转90°/270°+移动时选区映射存在问题,其它条件下可使用4.图片旋转仅获取截图区域,未做旋转处理 this.curImgStatus=curScale:1.0,curRotate:0,c 查看详情

图像处理基于opencv底层实现的图片旋转

...直方图匹配【图像处理】高斯滤波、中值滤波、均值滤波图片旋转,本质上是对旋转后的图片中每一个像素点计算在原图的位置。然后照搬过来就好。(多说一句。假设计算出来在原图中的位置不是整数而是小数,由于像素点个... 查看详情

图片旋转

 使用PIL完成图片处理功能 图片旋转:   效果图:   原图:    查看详情

canvas图片平铺设置

/***图片平铺*/functioninitDemo7(){varcanvas=document.getElementById("demo7");if(!canvas)return;varcontext=canvas.getContext("2d");vartype=["no-repeat",//不平铺"repeat-x",//横向平铺"repeat-y",//纵向平铺"repeat"//全画布平 查看详情

css如何将图片横向平铺?

在CSS中,可以使用background(背景)属性来添加图片,默认图片是向x轴和y轴重复。那么css如何将图片横向平铺?下面本篇文章就来给大家介绍一下使用CSS将图片横向平铺的方法,希望对大家有所帮助。在CSS中,可以使用background-r... 查看详情

css如何将图片横向平铺?

在CSS中,可以使用background(背景)属性来添加图片,默认图片是向x轴和y轴重复。那么css如何将图片横向平铺?下面本篇文章就来给大家介绍一下使用CSS将图片横向平铺的方法,希望对大家有所帮助。在CSS中,可以使用background-r... 查看详情

图片处理-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... 查看详情

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

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

苹果html上传后图片旋转问题

最近做移动web项目但是遇到在苹果设备上html上传图片后,图片传到后台是旋转的旋转角度不一,因此再次读取照片时,无法正常显示,目前已经找到解决方法,至于原因看不太懂翻译过来也是完全按照单词翻译词语不同。但是... 查看详情

tensorflow图片预处理,随机亮度,旋转,剪切,翻转。(代码片段)

...训练时,需要更多的训练次数,比如说我对每张图片进行了一次旋转,那么训练次数就要提高一倍。也就是说训练集多样性增加,同时训练次数也要增加。代码:importtensorflowas 查看详情