gpt4 book ai didi

ios - 对 UIImage 的 init(data :scale:) method in Swift 3. 0

转载 作者:行者123 更新时间:2023-11-28 16:08:51 26 4
gpt4 key购买 nike

这是我的目的,我的图像宽度为 750,我想将其缩放到 128然后我找到了一个名为 UIImage 的 init 方法 init(data:scale:)

接下来是我的代码

func scaleImage(image:UIImage, ToSpecificWidth targetWidth:Int) -> UIImage{
var scale = Double(targetWidth) / Double(image.size.width)
let scaledImage = UIImage(data: UIImagePNGRepresentation(image)! as Data, scale: CGFloat(scale))
return scaledImage!
}

print("originImageBeforeWidth: \(portrait?.size.width)") // output: 750
let newImage = Tools.scaleImage(image: portrait!, ToSpecificWidth: 128) // the scale is about 0.17
print("newImageWidth: \(newImage.size.width)") // output: 4394.53125

显然新的宽度离我的意图太远了我正在寻找 750 * 0.17 = 128但是我得到 750/0.17 = 4394

然后我改变我的 scaleImage 函数这是更新后的代码

func scaleImage(image:UIImage, ToSpecificWidth targetWidth:Int) -> UIImage{
var scale = Double(targetWidth) / Double(image.size.width)
scale = 1/scale // new added
let scaledImage = UIImage(data: UIImagePNGRepresentation(image)! as Data, scale: CGFloat(scale))
return scaledImage!
}

print("originImageBeforeWidth: \(portrait?.size.width)") // output: 750
let newImage = Tools.scaleImage(image: portrait!, ToSpecificWidth: 128) // the scale is about 5.88
print("newImageWidth: \(newImage.size.width)") // output: 128

这正是我想要的,但是代码 scale =1/scale 没有任何意义

这是怎么回事?

最佳答案

您尝试使用的 init 方法不是为了调整图像大小。并且 scale 参数不是调整大小的比例。它是 1x、2x、3x 比例。本质上,scale 的唯一有效值当前是 1.0、2.0 或 3.0。

虽然将 scale 设置为您预期的倒数,但您可以通过 size 属性返回您想要的结果,但这根本不是您应该做的。

有适当的方法可以调整图像大小,例如 How to Resize image in Swift?以及其他人。

关于ios - 对 UIImage 的 init(data :scale:) method in Swift 3. 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39845987/

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