我写了一个扩展来调整给定图像的大小:
extension NSImage {
func resizeImage(width: CGFloat, _ height: CGFloat) -> NSImage {
let img = NSImage(size: CGSize(width:width, height:height))
img.lockFocus()
let ctx = NSGraphicsContext.current()
ctx?.imageInterpolation = .high
self.draw(in: NSMakeRect(0, 0, width, height), from: NSMakeRect(0, 0, size.width, size.height), operation: .copy, fraction: 1)
img.unlockFocus()
return img
}
}
但我不知道如何在for循环中使用它:
for image in images
{
image.resizeImage(width: CGFloat(rwidth),CGFloat(rheight))
// I intent to resize the image and save it to a file
// resize -> save to local file
}
这不起作用......也不能将调整后的图像分配给旧图像。我应该创建一个临时变量,将调整大小的图像分配给它并保存吗?我想这会浪费你的记忆。
我该如何解决这个问题?
答案 0 :(得分:1)
你无法改变Swift中的扩展名。你必须初始化第二个数组。
使用map
作为单行代码:
let resizedImages = images.map { $0.resizeImages(width: CGFloat(rwidth), CGFloat(rheight)) }