NSImageをPFFileとして解析するためにNSImageのサイズを変更しようとしています。データサイズを減らすために寸法を変更する必要がありますが、機能しません。サイズ変更された画像は、Swift内の幅と高さのサイズを変更しますが、元の画像と同じ寸法を維持します。Swift - OSX - NSImageデータのサイズを変更する
画像は2560 x 1706,721 KBのJPGです。
私はデータにそれを渡すと、それは私のコードである。ここ5.7メガバイト
に同じ寸法とGOSを保つ:
let fotoNSImage = NSImage(byReferencing: url)
let fotoNSImageRedim = redimensionaNSImage(imagem: fotoNSImage, tamanho: NSSize(width: 200, height: 200))
let fotoNSImageRep = NSBitmapImageRep(data: (fotoNSImageRedim.tiffRepresentation)!)
let fotoNSImagePng = fotoNSImageRep!.representation(using: NSBitmapImageRep.FileType.png, properties: [:])
let fotoProduto = FotoProduto(foto: PFFile(data: fotoNSImagePng!)!, categorias: [])
・デ・イメージのサイズを変更する方法:
static func redimensionaNSImage(imagem: NSImage, tamanho: NSSize) -> NSImage {
var ratio: Float = 0.0
let imageWidth = Float(imagem.size.width)
let imageHeight = Float(imagem.size.height)
let maxWidth = Float(tamanho.width)
let maxHeight = Float(tamanho.height)
if (imageWidth > imageHeight) {
// Landscape
ratio = maxWidth/imageWidth;
}
else {
// Portrait
ratio = maxHeight/imageHeight;
}
// Calculate new size based on the ratio
let newWidth = imageWidth * ratio
let newHeight = imageHeight * ratio
// Create a new NSSize object with the newly calculated size
let newSize: NSSize = NSSize(width: Int(newWidth), height: Int(newHeight))
// Cast the NSImage to a CGImage
var imageRect: CGRect = CGRect(x: 0, y: 0, width: Int(newWidth), height: Int(newHeight))
let imageRef = imagem.cgImage(forProposedRect: &imageRect, context: nil, hints: nil)
// Create NSImage from the CGImage using the new size
let imageWithNewSize = NSImage(cgImage: imageRef!, size: newSize)
// Return the new image
return imageWithNewSize
}
私はすでに成功せずに次のアプローチを試みてきました。
1 - fotoNSImagePngに直接pixelWideとpixelHighを変更します。このアプローチに従ってください: - -
let rep = NSBitmapImageRep(bitmapDataPlanes: nil,
pixelsWide: 200,
pixelsHigh: 133,
bitsPerSample: 8,
samplesPerPixel: 4,
hasAlpha: true,
isPlanar: false,
colorSpaceName: NSDeviceRGBColorSpace,
bytesPerRow: Int(newSize.width * 4),
bitsPerPixel: 32)
3: を
fotoNSImageRep?.pixelsWide = 200
fotoNSImageRep?.pixelsHigh = 133
2新しいNSBitmapImageRepを作成し、それに画像表現を置き換えますHow to resize - resample - change file size - NSImage
4 - NSBitmapImageRepサイズの値を変更します。
fotoNSImageRep?.size.width = 200
fotoNSImageRep?.size.height = 133
これまでのところ何も働いていません。