gpt4 book ai didi

ios - 我应该在 Swift iOS 应用程序中使用 UIImage 还是 CGImage?

转载 作者:可可西里 更新时间:2023-11-01 03:03:34 26 4
gpt4 key购买 nike

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

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

  • 加载 jpg/png 图像 - 可能是位图/cgimage。 (他可以来自文件系统,也可以来自在线下载的图片)
  • 可能将图像另存为压缩/调整大小的 png/jpg 文件
  • 为视觉控件提供图像引用

我是 swift 和 ios 平台的新手,但据我所知,cgimage 已经很接近了吗?然而,似乎没有办法在使用 cgimage 时从他的文件系统加载图像......但我发现人们正在讨论例如UIImage,所以我现在怀疑我最初的印象是 cgimage 是否最符合我的需求。

最佳答案

UIImageCGImageCIImage 很容易混淆。区别如下:

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

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

CIImage: CIImage 是表示图像的不可变对象(immutable对象)。它不是图像。它只有与之关联的图像数据。它具有生成图像所需的所有信息。您通常将 CIImage 对象与其他 Core Image 类结合使用,例如 CIFilterCIContextCIColorCIVector。您可以使用各种来源提供的数据创建 CIImage 对象,例如 Quartz 2D 图像、Core Videos 图像等。需要使用各种 GPU 优化的 Core Image 过滤器。它们也可以转换为 NSBitmapImageReps。它可以基于 CPU 或 GPU。

总而言之,UIImage 就是您要查找的内容。原因是:

  1. You can get image from device memory and assign it to UIImage

  2. You can get image from URL and assign it to UIImage

  3. You can write UIImage in your desired format to device memory

  4. You can resize image assigned to UIImage

  5. Once you have assigned an image to UIImage, you can use that instance in controls directly. e.g. setting background of a button, setting as image for UIImageView

本来可以添加代码示例,但所有这些都是已经在 Stackoverflow 上得到解答的基本问题,因此没有意义。更不用说添加代码会使它变得不必要的大。

归功于总结差异:Randall Leung

关于ios - 我应该在 Swift iOS 应用程序中使用 UIImage 还是 CGImage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34513106/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com