macOS图像基类NSImageRep
macOS图像基类NSImageRep

macOS图像基类NSImageRep

NSImageRep 是 macOS 中用于表示图像的一种抽象基类,定义了图像的“表示方式”(representation),它是 图像数据的底层载体。

可以理解为:

NSImage 是图像的“容器”。

一个 NSImage 可以包含多个 NSImageRep 对象(比如 bitmap、PDF、vector、@2x 等多种表示)。

NSImageRep 是抽象类,具体子类才承载实际图像数据,如:

1、NSBitmapImageRep:用于位图图像,支持压缩、编码等操作(最常用)。

2、NSPDFImageRep:用于 PDF 图像表示(矢量)。

3、NSEPSImageRep:表示 EPS 图像。

4、NSCIImageRep:用于 Core Image 图像。

5、NSCustomImageRep:用于自定义绘图行为。

6、NSCachedImageRep:为视图缓存渲染内容。

常用属性

在子类中也可以访问这些属性。

1、pixelsWide / pixelsHigh:像素宽高。

2、size:点(point)尺寸。

3、hasAlpha:是否包含 alpha 通道。

4、colorSpaceName:色彩空间(如 .deviceRGB)。

5、bitsPerSample / samplesPerPixel:每个像素的位数、颜色通道数。

使用场景

1、压缩图片 → JPEG/PNG:使用 NSBitmapImageRep。

2、加载 PDF → 渲染图像:使用 NSPDFImageRep。

3、获取图片尺寸:从 NSImageRep 获取像素尺寸。

4、多分辨率图像处理(@2x/@3x):每个分辨率是一个 ImageRep。

5、自定义绘图输出图像:使用 NSCustomImageRep。

使用示例

1、从NSImage中获取NSImageRep

let image = NSImage(named: "example")!
if let reps = image.representations.first {
    print("图像尺寸:\(reps.pixelsWide) x \(reps.pixelsHigh)")
}

2、获取 NSBitmapImageRep 来做压缩

if let tiff = image.tiffRepresentation,
   let bitmap = NSBitmapImageRep(data: tiff) {
    let jpegData = bitmap.representation(using: .jpeg, properties: [.compressionFactor: 0.7])
}

总结

NSImage是图像容器,包含多个NSImageRep表示方式,NSImageRep是图像数据的抽象表示类,实际使用的是其子类。

主要功能为:读取图像元信息、压缩、编码、保存、像素访问等。

相关文章

MacOS图像显示类NSImage:https://fangjunyu.com/2024/11/22/macos%e5%9b%be%e5%83%8f%e6%98%be%e7%a4%ba%e7%b1%bbnsimage/

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注