uiimage常用方法总结

UIKit框架-基础控件Swift版本: 5.UIImage方法/属性详解 UIKit框架-基础控件Swift版本: 5.UIImage方法\属性详解 阅读详情
IOS中对图片的处理  UIImage
相信做项目时肯定会有用到 UIImage 这个类,那我们就来看一下这个类中都有什么内容。
其实这篇文章就是在看文档的时候想记录一下文档中得方法。
UIImage  继承于NSObject
下面介绍一下UIImage中的方法
首先是我们最常用的

通过图片的文件名来获取这个图片
+ (UIImage *)imageNamed:(NSString *)name
//要注意的是这个方法适用于已经导入到工程中的图片

创建新图片



1、+ (UIImage *)imageWithContentsOfFile:(NSString *)path
//通过文件加载指定路径下的文件内容获得新图片

2、+ (UIImage *)imageWithData:(NSData *)data
//通过一个NSData对象来获得图片
3、+ (UIImage *)imageWithData:(NSData *)data scale:(CGFloat)scale
//同上,只是再加上一个图片大小比例,用来改变图片的大小

4、+ (UIImage *)imageWithCGImage:(CGImageRef)cgImage
//使用Quartz 2D对象创建UIImage
5、+ (UIImage *)imageWithCGImage:(CGImageRef)imageRef scale:(CGFloat)scale orientation:(UIImageOrientation)orientation
//制定图片的比例和方向,其中方向是个枚举类。

6、+ (UIImage *)imageWithCIImage:(CIImage *)ciImage
//用一个Core Image 对象创建图像
7、+ (UIImage *)imageWithCIImage:(CIImage *)ciImage scale:(CGFloat)scale orientation:(UIImageOrientation)orientation
//再加上比例和图片方向

8、- (UIImage *)imageWithAlignmentRectInsets:(UIEdgeInsets)alignmentInsets
//返回指定矩形区域内的图像

9、+ (UIImage *)animatedImageNamed:(NSString *)name duration:(NSTimeInterval)duration
//创建一个动态图片,动态图片持续的时间为duration
10、+ (UIImage *)animatedImageWithImages:(NSArray *)images duration:(NSTimeInterval)duration
//用一组图片创建一个动态图片,动态持续时间duration

11、+ (UIImage *)animatedResizableImageNamed:(NSString *)name capInsets:(UIEdgeInsets)capInsets duration:(NSTimeInterval)duration
//创建一个在可变大小的图片上指定矩形区域内的动态图片
12、+ (UIImage *)animatedResizableImageNamed:(NSString *)name capInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode duration:(NSTimeInterval)duration
//同上,只是多了一个图片变化的方式,具体来说就是平铺或者拉伸

13、- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets
//用制定矩形区域创建图像
14、- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode
//同上,指定图片变化方式

初始化图片  



方法的作用在从上面的一些方法中都能找到原型,这里就不一一注释了
1、– initWithContentsOfFile:  //从文件加载图片
2、– initWithData:                  //用NSData对象初始化图片
3、– initWithData:scale:      //用NSData对象,指定的比例,初始化图片
4、– initWithCGImage:
5、– initWithCGImage:scale:orientation:
6、– initWithCIImage:
7、– initWithCIImage:scale:orientation:


绘画图片

1、– drawAtPoint:
//在指定的点开始绘画图片,这个点就是图片的做上角顶点
2、- (void)drawAtPoint:(CGPoint)point blendMode:(CGBlendMode)blendMode alpha:(CGFloat)alpha
//在指定的点绘制整个图片,并使用自定义图片复合模式,并设置透明度

3、– drawInRect:
//在指定区域内绘制图片,可根据需要缩放图片
4、– drawInRect:blendMode:alpha:
//参照上面第二条
5、– drawAsPatternInRect:
//在指定区域内,平铺图片


image的属性
  imageOrientation   //图片的方向
   size   //图片的大小size
   scale   //图片的比例
   resizingMode  //图片变化方式
   CGImage  //潜在的Quartz image
   CIImage  //潜在的Core Image
   images  //返回一个由图片组成的数组,针对于由一组图片生成的动态图片
   duration  //返回动态图片持续的时间(即动态图片播放一遍的时间)
   capInsets  //图片上选定的区域
   alignmentRectInsets  //图片平铺的区域

iOS自带的提供了一个API如下
[html] view plaincopy 
NSData *UIImageJPEGRepresentation(UIImage *image, CGFloat compressionQuality);    
在Iphone上有两种读取图片数据的简单方法: UIImageJPEGRepresentation和UIImagePNGRepresentation. UIImageJPEGRepresentation函数需要两个参数:图片的引用和压缩系数.而UIImagePNGRepresentation只需要图片引用作为参数.通过在实际使用过程中,比较发现: UIImagePNGRepresentation(UIImage* image) 要比UIImageJPEGRepresentation(UIImage* image, 1.0) 返回的图片数据量大很多.譬如,同样是读取摄像头拍摄的同样景色的照片, UIImagePNGRepresentation()返回的数据量大小为199K ,而 UIImageJPEGRepresentation(UIImage* image, 1.0)返回的数据量大小只为140KB,比前者少了50多KB.如果对图片的清晰度要求不高,还可以通过设置 UIImageJPEGRepresentation函数的第二个参数,大幅度降低图片数据量.譬如,刚才拍摄的图片, 通过调用UIImageJPEGRepresentation(UIImage* image, 1.0)读取数据时,返回的数据大小为140KB,但更改压缩系数后,通过调用UIImageJPEGRepresentation(UIImage* image, 0.5)读取数据时,返回的数据大小只有11KB多,大大压缩了图片的数据量 ,而且从视角角度看,图片的质量并没有明显的降低.因此,在读取图片数据内容时,建议优先使用UIImageJPEGRepresentation,并可根据自己的实际使用场景,设置压缩系数,进一步降低图片数据量大小。

[html] view plaincopy 
UIImage *imageNew = [info objectForKey:@"UIImagePickerControllerOriginalImage"];  
imageNew = [self imageWithImage:imageNew scaledToSize:CGSizeMake(100, 100)];  
NSData *imageData = UIImageJPEGRepresentation(imageNew, 0.0001);  
  
m_selectImage = [UIImage imageWithData:imageData];  


.h具体code
 
[html] view plaincopy 
#import <Foundation/Foundation.h>  
  
@interface UIImage (UIImageExt)  
  
- (UIImage *)scaleToSize:(UIImage *)img size:(CGSize)size;  
  
- (UIImage *)imageByScalingAndCroppingForSize:(CGSize)targetSize;  
@end  
.m具体code
[html] view plaincopy 
#import "UIImageExt.h"  
  
  
@implementation UIImage (UIImageExt)  
  
- (UIImage *)scaleToSize:(UIImage *)img size:(CGSize)size{  
    // 创建一个bitmap的context  
    // 并把它设置成为当前正在使用的context  
    UIGraphicsBeginImageContext(size);  
    // 绘制改变大小的图片  
    [img drawInRect:CGRectMake(0, 0, size.width, size.height)];  
    // 从当前context中创建一个改变大小后的图片  
    UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();  
    // 使当前的context出堆栈  
    UIGraphicsEndImageContext();  
    // 返回新的改变大小后的图片  
    return scaledImage;  
}  
  
  
  
- (UIImage*)imageByScalingAndCroppingForSize:(CGSize)targetSize  
{  
    UIImage *sourceImage = self;  
    UIImage *newImage = nil;  
    CGSize imageSize = sourceImage.size;  
    CGFloat width = imageSize.width;  
    CGFloat height = imageSize.height;  
    CGFloat targetWidth = targetSize.width;  
    CGFloat targetHeight = targetSize.height;  
    CGFloat scaleFactor = 0.0;  
    CGFloat scaledWidth = targetWidth;  
    CGFloat scaledHeight = targetHeight;  
    CGPoint thumbnailPoint = CGPointMake(0.0,0.0);  
      
    if (CGSizeEqualToSize(imageSize, targetSize) == NO)  
    {  
        CGFloat widthFactor = targetWidth / width;  
        CGFloat heightFactor = targetHeight / height;  
          
        if (widthFactor > heightFactor)  
            scaleFactor = widthFactor; // scale to fit height  
        else  
            scaleFactor = heightFactor; // scale to fit width  
        scaledWidth  = width * scaleFactor;  
        scaledHeight = height * scaleFactor;  
          
        // center the image  
        if (widthFactor > heightFactor)  
        {  
            thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5;  
        }  
        else  
            if (widthFactor < heightFactor)  
            {  
                thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5;  
            }  
    }  
      
    UIGraphicsBeginImageContext(targetSize); // this will crop  
      
    CGRect thumbnailRect = CGRectZero;  
    thumbnailRect.origin = thumbnailPoint;  
    thumbnailRect.size.width  = scaledWidth;  
    thumbnailRect.size.height = scaledHeight;  
      
    [sourceImage drawInRect:thumbnailRect];  
      
    newImage = UIGraphicsGetImageFromCurrentImageContext();  
    if(newImage == nil)  
        NSLog(@"could not scale image");  
      
    //pop the context to get back to the default  
    UIGraphicsEndImageContext();  
    return newImage;  
}  
  
@end  
JS实例(三)图片的缓慢放大和缩小   我们经常能看到在一些网站中可以通过按钮实现对图片的放大或者缩小,也有可能是鼠标经过时图片放大。在本例中就是通过JavaScript实现图片的放大和缩小。   首先是进行简单的页面布局 1 <div class="imagedispose"> 2 <img src="1.jpeg" id="imaged" width="400px" height="3... 阅读详情

相关推荐

银河麒麟V10 SP3系统下如何安全安装gcc-toolset-10(附yum仓库避坑指南)

本文详细介绍了在银河麒麟V10 SP3系统中安全部署gcc-toolset-10的完整方案。核心在于通过配置默认禁用的yum仓库(如EPKL仓库)并配合--enablerepo参数进行精准安装,有效规避依赖冲突风险,实现与系统默认GCC 7.3的稳定共存。文章还提供了多版本环境切换、系统维护及故障排查的实用指南,确保操作的可控与可逆。

h0i1j2k3l的博客 587

IOS UIImage类方法总结

IOS中对图片的处理 UIImage 相信做项目时肯定会有用到 UIImage 这个类,那我们就来看一下这个类中都有什么内容。 其实这篇文章就是在看文档的时候想记录一下文档中得方法。 UIImage 继承于NSObject 下面介绍一下UIImage中的方法 首先是我们最常用的 通过图片的文件名来获取这个图片 + (UIImage *)imageNamed:(N...

azyiytn69263的博客 169

Pipeline更多理解

Pipe 类型用途VIGVideo Image Generator:用于图层显示,支持 scaling、rotationRGB简单图层显示,较低优先级DMA主要用于 writeback / WFD / composition output,即从 framebuffer 输出到外部设备(或 memory)Cursor小图层,用于显示指针等很可能是:分别用于主屏、仪表、虚拟显示的输出路径或者用于不同的 display 去做 GPU_TARGET / writeback 的拷贝你看到的意思。

Damon_X的博客 1052

imageWithData 使用分析

UIImage *image = [UIImage imageWithData:data]; 首先,我们要明白我们用这个方法的目的:利用imageWithData这个二进制方法主要是为了得到一个图片对象。 接下来分析一下我们常用的得到data的方法: 方法1:     NSString *path = [[NSBundle mainBundle] pathFor

MayerF的专栏 5103

XGBoost算法案例 - 红酒品质分类

数据集共包含 11 个特征,共计 3269 条数据. 我们通过训练模型来预测红酒的品质, 品质共有 6 个各类别,分别使用数字: 0、1、2、3、4、5 来表示。

YIAN爱学习的博客 449

CoDeSys系列-3、Windows运行时软PLC主站和p-net从站IO设备组网测试

前面CODESY下载安装并熟悉了,p-net搭建从站也已经跑在虚拟机树莓派上了,我们只需要快速搭建一个profinet主站来和从站进行交互即可,这里我们直接用Windows下带的软PLC搭建profinet主站并和p-net的demo从站程序进行IO交互。评估是否进行Windows下的运行时PLC前先看一下注意事项,Windows下安装配置会需要修改boot及防火墙等,可能会影响Windows电脑的正常使用,所以创建项目时的设备可以选择非RTE的。

逍遥游的博客 7312

【iOS】—— 知乎日报第四周遇到的问题

1.imageWithData获取图片为nil: imageWithData 使用分析

m0_55124878的博客 2276

LangGraph实战:用Python异步构建智能客服多轮对话系统(附完整代码)

本文详细介绍了如何使用LangGraph框架和Python异步编程构建一个高性能的智能客服多轮对话系统。通过将对话流程建模为有向图,结合thread_id实现多用户对话隔离,并利用异步节点提升系统并发处理能力,有效解决了传统客服系统上下文遗忘与高并发瓶颈问题。文章提供了从环境搭建、状态管理、异步优化到复杂业务逻辑与部署的完整实战代码。

weixin_29055137的博客 149

iOS优雅的展示GIF动图2----UIImage

开篇语: 上一篇我们介绍了如何使用FLAnimatedImage类库加载gif动画,但是,当我们采用了此方案之后发现,牵连的地方还真不少。首先,所有UIImageView都需要更换一边。其次以往传递UIImage的地方需要换成FLAnimatedImage,这修改量可就大了。如何才能继续优雅的使用UIImage呢? UIImage: 实际上,UIImage是支持创建动图的,但是方法有些个性:...

学习小使者 的专栏 4743

无刷电机控制基础(2)——有感和无感驱动、调速

上一篇文章我们讲了一些无刷电机的基础知识,包括无刷电机的内部结构,驱动原理等,我们知道了只需要按照转子的当前位置,来按顺序给定子线圈通电,就能让电机转动起来。但是,上一篇中我们跳过了一个关键步骤,就是如何检测转子的位置。本篇我们就讲讲常用的位置检测方法,以及引出的一些相关问题。我们知道,获取磁铁的位置可以用霍尔传感器,无刷电机的转子就是永磁体,因此只要在合适的位置安装霍尔传感器,就能知道转子的旋转位置。在无刷电机中,一般用3个开关型霍尔器件就能检测转子的位置。

小白白学电子 2万+

【24届计算机校招】面经汇总

这是笔者为了能够记录一下接下来一段时间会看的一些博客视频等汇总。一是为了汇总后常回来看看,而是为了后面的人在这个阶段准备的时候有个参考。现在已经6月底了,大部分高校的夏令营都出来了,而我至今还是夏0营,前几天还为川大会收双非而感到高兴,但遗憾的是川大并没要我。而我另一位双非的朋友已经拿到offer,在决定去南开还是华师了。没有对比就没伤害,我开始怀疑自己的决策是否正确——这段时间的夏令营我都有关注,但我仅报了少部分的几个酒吧舞,而没有选择海投,我觉得只要我认准了一个东西,我拼尽全力就一定能够获取到。

JehanRio's Private Blog 800

iPhone中对UIImage对象处理的常用方法

(一)根据给定得图片,从其指定区域截取一张新得图片 -(UIImage *)getImageFromImage{ //大图bigImage //定义myImageRect,截图的区域 CGRect myImageRect = CGRectMake(10.0, 10.0, 57.0, 57.0); UIImage* bigImage= [UIImage

wwwcybcom的专栏 1万+

YOLOv8改进-利用图像去雾网络UnfogNet提升检测精度的探索【附核心模块代码】

YOLOv8-UnfogNet联合模型的提出为目标检测和图像去雾领域提供了一个新的思路。通过将图像去雾网络和目标检测网络结合,不仅可以提升在恶劣天气下的目标检测精度,还能够为实际应用中的自动驾驶、监控安防等领域带来更强的鲁棒性和适应性。随着去雾技术和目标检测算法的不断发展,我们相信,这种联合方法将在多个领域中获得更加广泛的应用,并为进一步提升图像质量和检测精度做出重要贡献。

一键难忘的博客 3202

iphone UIImage常用方法

http://iphoneincubator.com/blog/tag/uiimage Recently there have been some interesting developer news related to working with images on the iPhone. First there is Chris Greening’s open source projec...

mmdev 131

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

iphone UIimage 常用 方法

http://iphoneincubator.com/blog/tag/uiimage Recently there have been some interesting developer news related to working with images on the iPhone. First there is Chris Greening’s open source projec...

beikexp的专栏 185

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

UIImage常用属性和方法

一、属性 1、size: reflects orientation setting. In iOS 4.0 and later, this is measured in points. In 3.x and earlier, measured in pixels。设置控件的尺寸。 @property(nonatomic,readonly) CGSize size; 2、CGI

BlackWolfSky的博客 3367

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

UIImage类中的常用拉伸方法

转载自:   http://www.beauty-soft.net/blog/ceiba/Ios/20130516/641.html 一、resizableImageWithCapInsets 今天做了一个温度计的应用,需要一个图,能够根据输入的数据将温度计里面的红色图片拉伸。为了达到这个效果,使用了iOS5的函数:resizableImageCapInsets:(UI

沸腾的泪水的专栏 508

iOS开发中常用的分类方法---UIImage+extension

UIImage扩展类压缩图片 1. @interface UIImage (UIImageExt) - (UIImage*)imageByScalingAndCroppingForSize:(CGSize)targetSize; @end @implementation UIImage (UIImageExt) - (UIImage*)imageByScalingAndCroppingF

zhangqq16781的博客 828

UIImage类中的常用拉伸方法(转)

一、resizableImageWithCapInsets今天做了一个温度计的应用,需要一个图,能够根据输入的数据将温度计里面的红色图片拉伸。为了达到这个效果,使用了iOS5的函数:resizableImageCapInsets:(UIEdgeInsets)Insets。其中Insets这个参数的格式是(top,left,bottom,right),从上、左、下、右分别在图片上画了一道线,这样就给

Mage的专栏 483

iOS开发中常用的分类方法---UIImage+Category

在开发中使用分类对原有的系统类进行方法扩展,是增强系统原有类功能的常见做法。 /** * 自由拉伸一张图片 * * @param name 图片名字 * @param left 左边开始位置比例 值范围0-1 * @param top 上边开始位置比例 值范围0-1 * * @return 拉伸后的Image */ + (UIImage *)resizedImag...

weixin_30444105的博客 190

UIImage的使用

UIImage就是一个储存图片的变量,其它控件需要显示图片时都要先通过UIImage才能获取到图片,所以它是连接图片和控件的中转站。 构造方法:     UIImage * tempImage = [UIImage imageNamed:IMAGE_NAME]; 常用方法:     //UIImage自带方法:(readonly)     CGSize imageSize =[tempImage

jayzjj000的专栏 625

IOS-UIImage和UIImageView区别

你了解UIImage和UIImageView吗?威名互动今天就为大家简单介绍一下吧。图像是iOS应用程序的强大工具。UIImage是NSObject的子类,Foundation框架的一部分。UIImage是一个简单的对象,它代表了显示图像所需要的数据。UIImage对应UIKit中的UIImageView。UIImageView是UIView的子类,但它是为在屏幕上绘制UIImage而设计的。

baojie1022的专栏 2103

UIImage

UIImage即图片,创建方法主要有4种: 1、imageNamed (实例方法) UIImage * image = [UIImage imageNamed:@"sample"]; 加载流程如下: a.系统回去检查系统缓存中是否存在该名字的图像,如果存在则直接返回。   b. 如果系统缓存中不存在该名字的图像,则会先加载到缓存中,在返回该对象。 观察上面的操作我们发现系统会

萱的house 1096

UIImage加载本地图片资源

图片读取 根据是否将创建好的对象缓存入系统内存,有两类创建UIImage 对象的方法可选: UIImage //缓存: + imageNamed:,只需传入文件名.扩展名(可选)即可。 //不缓存: + imageWithContentsOfFile:,必须传入文件的全名(全路径+文件名)。 复制代码注意,对于有缓存功能的方法来说,其创建对象的步骤如下: 根据图片文件名在缓存池中查找特定的UII...

weixin_34029680的博客 2664

UIImage与CGImage的相关知识点总结

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33774615的博客 339
上一篇: 自定义UILabel设置行距和字间距的各种方法
下一篇: 图文混排(TextKit)
Allen_iOS
博客等级 码龄12年 3粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值