gpt4 book ai didi

swift - 从 NSImage 中切割大小的正方形并缩放以适合更小的正方形

转载 作者:行者123 更新时间:2023-11-28 15:37:29 24 4
gpt4 key购买 nike

我想知道这是否可能,如果是,我该如何实现。我有大小为 120x120 的 NSImageView。我想在里面放一个 NSImage,但缩放比例与常规方式有点不同。所以,假设我有一张 500x800 的图像,我想将其放入方形 View 中。我想要达到的是 - 从初始图像图像的中心取大小为 500x500 的正方形区域,然后缩小该正方形以适合 nsimageview 的 120x120 大小。

有什么办法吗?

最好不要为该缩略图创建单独的图像文件。

最佳答案

好的,所以我自己找到了如何做到这一点。

1) 您需要从现有图像中剪切出一个目标大小的矩形2) 从该矩形和图像数据创建一个 NSImage。

        var originalImage : NSImage = NSImage()

if(FileManager.default.fileExists(atPath: self.fileUrl.absoluteURL.path))
{
originalImage = NSImage(byReferencing: self.fileUrl.absoluteURL)
}
else
{
originalImage = NSImage(named: "NoImage")!
}

let originalSize = originalImage.size
var sideSize : CGFloat = 0
//2. get size of square, by checking what side is smaller
if(originalSize.width > originalSize.height)
{
sideSize = originalSize.height
}
else
{
sideSize = originalSize.width
}

var originalImageRect : CGRect = CGRect(x: 0, y: 0, width: originalSize.width, height: originalSize.height)
guard let imageRef = originalImage.cgImage(forProposedRect: &originalImageRect, context: nil, hints: nil) else { return }

let thumbnailRect = CGRect(x: (originalSize.width / 2 - sideSize / 2), y: (originalSize.height / 2 - sideSize / 2), width: sideSize, height: sideSize)

let drawImage = imageRef.cropping(to: thumbnailRect);

let newImage = NSImage(cgImage: drawImage!, size: NSSize(width: SLIDE_WIDTH, height: SLIDE_HEIGHT))

OperationQueue.main.addOperation{
self.thumbnail = newImage
}

关于swift - 从 NSImage 中切割大小的正方形并缩放以适合更小的正方形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44131630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com