【问题标题】:How to get NSImage format and alpha in swift?如何快速获取 NSImage 格式和 alpha?
【发布时间】:2020-11-08 15:13:13
【问题描述】:

我的应用中有一个 NSImage,我需要获取它的格式并确定它是否有 alpha 通道。我设法检索到的唯一信息是图像大小。

(我通过拖放系统获得图像)

@State var image = NSImage(named: "image")

if self.image?.size.width == 1024 && self.image?.size.height == 1024 {
  ...
}

【问题讨论】:

    标签: swift nsimage


    【解决方案1】:

    NSImage 的特点在于它可以存储多种表示形式,每种表示形式可能采用不同的格式。例如,您可以将一种表示形式作为 PDF 矢量插图,然后将同一图像的几个位图版本以各种比例显示(即一种用于标准,一种用于 Retina,等等)。所以不是NSImage 真正的一种格式。

    可以遍历它的.representations 并查看它们。这些是NSImageRep 类型,并包含有关图像的更多信息(例如,它有一个hasAlpha 属性,可以告诉您表示是否具有Alpha 通道)。

    如果您想获得比NSImageRep 提供的更多信息,好消息是它是一个抽象超类,它为某些类型的图像提供了一堆具体的子类。例如,您可以使用as? 检查它的类以查看它是否是NSBitmapImageRepNSPDFImageRepNSCIImageRep 等。一旦您将表示转换为它的子类之一,您将获得更多查看图像数据的选项(NSBitmapImageRep 是非矢量图像数据中最常见的选项)。

    如果您真的想要深入了解,NSImageNSImageRep 都有转换为 CGImage 的方法,您可以在其中使用所有低级 CoreGraphics就可以了。

    【讨论】:

      猜你喜欢
      • 2015-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多