本文目录导读:

- 使用
ImageWriter相关的 API(如CGImageDestination或NSImage/NSBitmapImageRep) - 使用
UIImageWriteToSavedPhotosAlbum(iOS/macCatalyst) - 使用
CGImageDestinationFinalize(Core Graphics 底层)
ImageWriter(通常指 macOS 或早期 iOS 中用于将图像写入磁盘或相册的 API 或类)本身不直接“保存”为特定格式,它通常是一个将内存中的图像数据写入指定文件或数据对象的接口。
具体保存成什么格式,取决于你如何调用它以及传入的数据类型,以下是几种常见情况下的格式对应关系:
使用 ImageWriter 相关的 API(如 CGImageDestination 或 NSImage/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"))
注意: NSBitmapImageRep 的 representation(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(跨平台)。
版权声明:足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播