iOS 图片处理-图片旋转和裁剪
项目中要求处理图片, 简单记录一下图片旋转和裁剪过程
/** 将图片旋转弧度radians */
- (UIImage *)imageRotatedByRadians:(CGFloat)radians
{
// calculate the size of the rotated view's containing box for our drawing space
UIView *rotatedViewBox = [[UIView alloc] initWithFrame:CGRectMake(0,0,self.size.width, self.size.height)];
CGAffineTransform t = CGAffineTransformMakeRotation(radians);
rotatedViewBox.transform = t;
CGSize rotatedSize = rotatedViewBox.frame.size;
// Create the bitmap context
UIGraphicsBeginImageContext(rotatedSize);
CGContextRef bitmap = UIGraphicsGetCurrentContext();
// Move the origin to the middle of the image so we will rotate and scale around the center.
CGContextTranslateCTM(bitmap, rotatedSize.width/2, rotatedSize.height/2);
// // Rotate the image context
CGContextRotateCTM(bitmap, radians);
// Now, draw the rotated/scaled image into the context
CGContextScaleCTM(bitmap, 1.0, -1.0);
CGContextDrawImage(bitmap, CGRectMake(-self.size.width / 2, -self.size.height / 2, self.size.width, self.size.height), [self CGImage]);
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
#pragma mark - 截取当前image对象rect区域内的图像
- (UIImage *)subImageWithRect:(CGRect)rect
{
CGImageRef newImageRef = CGImageCreateWithImageInRect(self.CGImage, rect);
UIImage *newImage = [UIImage imageWithCGImage:newImageRef];
CGImageRelease(newImageRef);
return newImage;
}
#pragma mark - 压缩图片至指定尺寸
- (UIImage *)rescaleImageToSize:(CGSize)size
{
CGRect rect = (CGRect){CGPointZero, size};
UIGraphicsBeginImageContext(rect.size);
[self drawInRect:rect];
UIImage *resImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resImage;
}
#pragma mark - 压缩图片至指定像素
- (UIImage *)rescaleImageToPX:(CGFloat )toPX
{
CGSize size = self.size;
if(size.width <= toPX && size.height <= toPX)
{
return self;
}
CGFloat scale = size.width / size.height;
if(size.width > size.height)
{
size.width = toPX;
size.height = size.width / scale;
}
else
{
size.height = toPX;
size.width = size.height * scale;
}
return [self rescaleImageToSize:size];
}
一些处理UIImage相关的category: https://github.com/wyon0313/UIImageCategory
iOS 图片处理-图片旋转和裁剪相关推荐
- Fresco 二三事:图片处理之旋转、缩放、裁剪切割图片
关于Fresco加载图片的处理,例如旋转.裁剪切割图片,在官方文档也都有提到,只是感觉写的不太详细,正好最近项目里有类似需求,所以分享一些使用小tip,后面的朋友就不用再走弯路浪费时间了.(测试图片分 ...
- iOS之实现图片裁剪的几种方式
iOS之实现图片裁剪的几种方式 1.使用CGImageCreateWithImageInRect函数 CGImageCreateWithImageInRect函数是属于Core Graphics Fr ...
- 解决ios横屏拍照图片自动旋转90度问题
解决ios横屏拍照图片自动旋转90度问题 参考文章: (1)解决ios横屏拍照图片自动旋转90度问题 (2)https://www.cnblogs.com/lanshengzhong/p/900856 ...
- iOS transform解决连续多次旋转缩放,实现图片旋转缩放效果
一.需求 实现imageView的缩放旋转效果,一般有两种方式: 1.底层加scrollview,利用scrollview的属性实现.(推荐这种,这是我比较后发现的,手势做缩放旋转会有点弊端) 2.利 ...
- iOS 对Image图片本身进行旋转0,90,180,270
对图片本身进行旋转 + (UIImage *)image:(UIImage *)image rotation:(UIImageOrientation)orientation {long double ...
- java 图片合成 工具类_Java实现的微信图片处理工具类【裁剪,合并,等比例缩放等】...
本文实例讲述了Java实现的微信图片处理工具类.分享给大家供大家参考,具体如下: 现在 外面核心,图片文章比较少,看了拷贝代码,而用不了,用相应jar包处理,很多等比例缩放,达不到 想要的给予的期望: ...
- php图片特效,php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
本文实例讲述了php_imagick实现图片剪切.旋转.锐化.减色或增加特效的方法.分享给大家供大家参考.具体分析如下: 一个可以供PHP调用ImageMagick功能的PHP扩展.使用这个扩展可以使 ...
- torchvision.transforms 的CenterCrop():在图片的中间区域进行裁剪
pytorch中transform函数 torchvision.transforms是pytorch中的图像预处理包 一般用Compose把多个步骤整合到一起: 比如说 transforms.Comp ...
- 【精心挑选】10款基于 jQuery 的图片360度旋转插件
之前的文章向大家分享了实现网站功能的各种优秀的 jQuery 插件,今天这篇文章向大家推荐10款基于 jQuery 的图片360度旋转插件,同时还有非常详细的制作教程可以学习和参考.图片旋转展示是一种 ...
最新文章
- Django博客系统(忘记密码)
- Jenkins安装与配置
- node进程管理——pm2
- 如何修改浏览器服务器时间格式,浏览器模式怎么改模式
- 如何在mysql中添加复选框_如何使用输入和复选框更新mysql
- 观察者模式在android网络监控下的运用
- 变身抓重点小能手:机器学习中的文本摘要入门指南 | 资源
- 一步一步SharePoint 2007之二十二:完美解决实现Form认证后无法再用SharePoint Designer编辑网站的问题...
- ubuntu 学习笔记2--安装tomcat
- Dijkstra算法求最短路径(附leetcode 743 网络延迟问题)
- Lua中local变量和非local变量的区别
- Akka和Actor一起工作的消息《ten》译
- HTML的字体10种酷炫效果
- 两年工作经验,三面拼多多,最终获得offer!(面经总结)
- 人类杏仁核的核团:手动分割到自动图谱
- 新零售到家O2O 和到店O2O的区别?
- 让老照片重现光彩(三):完整论文的中文译文
- 计算机毕业设计项目推荐 - 毕设开题选题
- 关于 Java 的简介(评论抽奖送书)
- 使用ssh正向连接、反向连接、做socks代理的方法