1
イメージをサイズ変更して保存するために、これらの関数を一緒に使用しました。しかし、画像のサイズを適切に変更していないようです.50x50の画像が100x100として保存されるため、150x150の画像がサイズ変更されようとしました。何が原因なのか?イメージのサイズ変更とファイルへの保存
extension NSImage {
@discardableResult
func saveAsPNG(url: URL) -> Bool {
guard let tiffData = self.tiffRepresentation else {
print("failed to get tiffRepresentation. url: \(url)")
return false
}
let imageRep = NSBitmapImageRep(data: tiffData)
guard let imageData = imageRep?.representation(using: .PNG, properties: [:]) else {
print("failed to get PNG representation. url: \(url)")
return false
}
do {
try imageData.write(to: url)
return true
} catch {
print("failed to write to disk. url: \(url)")
return false
}
}
}
enum error:Error {
case imageCreationFailure
}
func resizeImageByFactor(_ url:URL) throws {
let image = NSImage(byReferencing: url)
guard image.isValid else { throw error.imageCreationFailure }
let reSize = NSSize(width: 50, height: 50)
let oldRect = CGRect(x: 0.0, y: 0.0, width: image.size.width, height: image.size.height)
let newRect = CGRect(x: 0.0, y: 0.0, width: reSize.width, height: reSize.height)
let newImage = NSImage(size: reSize)
newImage.lockFocus()
image.draw(in: newRect, from: oldRect, operation: .copy, fraction: 1.0)
newImage.unlockFocus()
newImage.size
let url = URL(fileURLWithPath: "test.jpg", relativeTo: url.deletingLastPathComponent())
newImage.saveAsPNG(url: url)
}
うん - それがあったという。ありがとう! –