ImageWriter保存图像格式

wen java案例 3

本文目录导读:

ImageWriter保存图像格式

  1. 使用 ImageWriter 相关的 API(如 CGImageDestinationNSImage/NSBitmapImageRep
  2. 使用 UIImageWriteToSavedPhotosAlbum(iOS/macCatalyst)
  3. 使用 CGImageDestinationFinalize(Core Graphics 底层)

ImageWriter(通常指 macOS 或早期 iOS 中用于将图像写入磁盘或相册的 API 或类)本身不直接“保存”为特定格式,它通常是一个将内存中的图像数据写入指定文件或数据对象的接口。

具体保存成什么格式,取决于你如何调用它以及传入的数据类型,以下是几种常见情况下的格式对应关系:

使用 ImageWriter 相关的 API(如 CGImageDestinationNSImage/NSBitmapImageRep

这是最常用的方式,你可以显式指定输出格式。

  • JPEG (.jpg/.jpeg)
    • 使用 kUTTypeJPEG 作为类型标识符。
    • 可以指定压缩质量(0.0 到 1.0)。
  • PNG (.png)
    • 使用 kUTTypePNG
    • 无损压缩,支持透明通道。
  • TIFF (.tiff)
    • 使用 kUTTypeTIFF
    • 常用于高质量图像保存或打印。
  • GIF (.gif)
    • 使用 kUTTypeGIF
    • 支持动画帧。
  • BMP (.bmp)
    • 使用 kUTTypeBMP
  • HEIC/HEIF (.heic,macOS High Sierra / iOS 11 及以上)
    • 使用 kUTTypeHEIC,这是苹果推荐的高效格式,支持无损/有损。

代码示例(Swift,使用 ImageWriter 相关类):

// 假设你有一个 NSImage 或 CGImage
let image = NSImage(named: "myImage")!
// 转为 JPEG 并写入文件
let imageData = image.tiffRepresentation // 先转为 TIFF 数据
let bitmapRep = NSBitmapImageRep(data: imageData!)!
let jpegData = bitmapRep.representation(using: .jpeg, properties: [.compressionFactor: 0.8])
try? jpegData?.write(to: URL(fileURLWithPath: "/path/to/output.jpg"))

注意: NSBitmapImageReprepresentation(using:properties:) 方法允许你选择 NSBitmapImageRep.FileType(如 .jpeg, .png, .tiff, .bmp, .gif)。

使用 UIImageWriteToSavedPhotosAlbum(iOS/macCatalyst)

这是 UIKit 中一个非常方便的函数,专门用于将图像保存到系统相册

  • 保存格式: 不开发人员决定,由系统自动判断
    • 系统会根据图像内容选择 HEIC(如果设备支持且未禁用)或 JPEG
    • 对于带有透明通道的图像,可能会保存为 PNG
  • 参数: 你传入的是 UIImage 对象,系统自己处理编码。

使用 CGImageDestinationFinalize(Core Graphics 底层)

这是最底层的图像写入方式,精度最高。

  • 格式由类型标识符决定:你可以创建 CGImageDestination 时指定 UTType(如 kUTTypeJPEG, kUTTypePNG 等)。
使用场景 典型 API/方法 保存的默认格式 能否指定格式?
iOS 保存到相册 UIImageWriteToSavedPhotosAlbum HEIC 或 JPEG(系统决定) 不能直接指定
macOS 写入文件 NSBitmapImageRep.representation 需要你指定(如 .jpeg
通用 Core Graphics CGImageDestination 由你传入的 UTType 决定
旧的 ImageWriter 类(经典 Mac OS) 已弃用 用户手动选择格式 早期版本固定为 PICT 或 TIFF

如果你是在问 macOS 的「Image Capture」或「ImageWriter」打印机驱动:

  • 那是指打印机驱动程序,它接收图像后,会将其转换为打印机理解的页面描述语言(如 PostScript 或 PCL),不是保存为普通图像文件格式,最终打印出来的物理纸张是不存在格式的。

一句话结论: ImageWriter 本身不保存格式,是你调用它时指定的图片类型(JPEG、PNG、TIFF、HEIC 等)决定了最终保存的格式,最常用的现代格式是 HEIC(苹果生态)和 JPEG/PNG(跨平台)。

抱歉,评论功能暂时关闭!