当前位置:  开发笔记 > IOS > 正文

我应该在Swift iOS应用程序中使用UIImage或CGImage吗?

如何解决《我应该在SwiftiOS应用程序中使用UIImage或CGImage吗?》经验,为你挑选了1个好方法。

我能找到的所有代码都围绕将图像直接加载到可视控件中.

但是,我有自己的缓存系统(从另一种语言转换项目),所以我尽可能高效地想要以下内容:

加载jpg/png图像 - 可能是一个位图/ cgimage.(他可以来自文件系统,也可以来自在线下载的图像)

可能将图像保存为压缩/调整大小的png/jpg文件

为视觉控制提供图像参考

我是swift和ios平台的新手,但据我所知,cgimage尽可能接近?但是,当使用cgimage时,似乎没有办法从文件系统加载图像...但是我发现人们正在讨论UIImage的方法,所以我现在怀疑我最初的印象ha cgimage是最好的匹配我的需要.



1> NSNoob..:

很容易混淆UIImage,CGImageCIImage.区别在于:

UIImage: UIImage object是一种显示图像数据的高级方式.您可以从文件,Quartz图像对象或收到的原始图像数据创建图像.它们是不可变的,必须在初始化时指定图像的属性.这也意味着可以从任何线程安全地使用这些图像对象.通常,您可以获取NSData包含PNGJPEG表示图像的对象并将其转换为UIImage.

CGImage: A CGImage只能代表位图.CoreGraphics中的操作,例如混合模式和屏蔽需要CGImageRefs.如果需要访问和更改实际的位图数据,可以使用CGImage.它也可以转换为NSBitmapImageReps.

CIImage: A CIImage是表示图像的不可变对象.它不是一个图像.它只有与之关联的图像数据.它具有生成图像所需的所有信息.通常使用CIImage结合对象与其他核心图片类,例如CIFilter,CIContext,CIColor,和CIVector.您可以使用从各种来源(如Quartz2D图像,核心视频图像等)提供的数据创建CIImage对象.需要使用各种GPU优化的Core Image过滤器.它们也可以转换为NSBitmapImageReps.它可以基于CPU或GPU.

总之,UIImage是你在寻找什么.原因是:

    您可以从设备内存中获取图像并将其分配给UIImage

    您可以从URL获取图像并将其分配给UIImage

    您可以将所需格式的UIImage写入设备内存

    您可以调整分配给UIImage的图像的大小

    将图像分配给UIImage后,可以直接在控件中使用该实例.例如,设置按钮的背景,设置为UIImageView的图像

本来会添加代码示例,但所有这些都是Stackoverflow上已经回答的基本问题,所以没有意义.更不用说添加代码会使这不必要的大.

总结差异的信用:Randall Leung

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有