【发布时间】:2020-07-16 17:26:11
【问题描述】:
我正在使用以下代码来调整图像的大小。但我一直在底部得到一个白色边框
func resize(withSize targetSize: NSSize) -> NSImage? {
let size=NSSize(width: floor((targetSize.width/(NSScreen.main?.backingScaleFactor)!)), height:floor( (targetSize.height/(NSScreen.main?.backingScaleFactor)!)))
let frame = NSRect(x: 0, y: 0, width: floor(size.width), height: floor(size.height))
guard let representation = self.bestRepresentation(for: frame, context: nil,hints: nil) else {
return nil
}
let image = NSImage(size: size, flipped: false, drawingHandler: { (_) -> Bool in
return representation.draw(in: frame)
})
return image
}
我已经尝试使用floor 函数来四舍五入值。但仍然是同样的问题。
【问题讨论】:
-
您的代码将 scaleToFit(这会扭曲您的原始图像)。是故意的吗?
-
@LeoDabus No....我只是想调整图像大小...
-
这也会考虑到屏幕比例。如果您传递 300x300 的大小,则屏幕比例为 @2x,生成的图像将为 600x600。是你想要的吗?
-
@LeoDabus 我通过了屏幕比例以确保图像不是 2X 缩放,因为我有一个视网膜屏幕。基本上我需要两个函数来调整图像保持纵横比的大小,一个不保留纵横比。输出文件必须与用户输入的像素大小完全相同,以防非长宽比保留。它应该与屏幕大小无关。
-
如果不考虑屏幕比例,结果看起来会像素化