hen*_*ter 5 cocoa nsimage swift
一个快速的问题.不是Obj-C问题.请不要将其标记为重复
我正在尝试编写一个在OS X上生成JPEG缩略图的类.我希望我有一些合理的东西形成缩小的NSImage,但我很难将JPEG文件写入磁盘.
class ImageThumbnail {
let size = CGSize(width: 128, height: 128)
var originalPath = ""
init(originalPath: String){
self.originalPath = originalPath
}
func generateThumbnail() {
let url = NSURL(fileURLWithPath: originalPath)
if let imageSource = CGImageSourceCreateWithURL(url, nil) {
let options: [NSString: NSObject] = [
kCGImageSourceThumbnailMaxPixelSize: max(size.width, size.height) / 2.0,
kCGImageSourceCreateThumbnailFromImageAlways: true
]
let cgImage = CGImageSourceCreateThumbnailAtIndex(imageSource, 0, options)
let scaledImage = cgImage.flatMap { NSImage(CGImage: $0, size: size) }
// How do I write scaledImage to a JPEG file?
}
}
}
Run Code Online (Sandbox Code Playgroud)
用法示例: ImageThumbail(originalPath: "/path/to/original").generateThumbnail()
首先,您需要获取图像的位图表示,获取该图像的JPEG表示(或您想要的任何格式),然后将二进制数据写入文件:
if let bits = scaledImage?.representations.first as? NSBitmapImageRep {
let data = bits.representationUsingType(.NSJPEGFileType, properties: [:])
data?.writeToFile("/path/myImage.jpg", atomically: false)
}
Run Code Online (Sandbox Code Playgroud)
NSBitmapImageFileType 为您提供表示选择:
public enum NSBitmapImageFileType : UInt {
case NSTIFFFileType
case NSBMPFileType
case NSGIFFileType
case NSJPEGFileType
case NSPNGFileType
case NSJPEG2000FileType
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4380 次 |
| 最近记录: |