iMessage App如何调整图像大小并保持纵横比
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iMessage App如何调整图像大小并保持纵横比相关的知识,希望对你有一定的参考价值。
我不清楚问题是否明确。但是我想知道当我们发送图像时,iMessage App如何调整图像的大小。让我向您展示一下。.
我在这里发送尺寸为1668x2500
的图像
但是当我用Photoshop测量保存的屏幕截图时,如黑色矩形所示,它显示:846x1128
我必须在该点箭头的右下角末端测量图像。因为图像是如此之大,而困惑却掩盖了该图像。
并且我尝试了另一幅不同尺寸的图像,如下表所示:渲染大小是指设备由Photoshop测量的大小。
据我所知。 iMessage正在使用846x1143
的最大大小。它不会超出此范围。并在该坐标空间中调整图像的大小。
S。 我想知道iMessage用于调整图像大小的公式。请帮助
答案
只能猜测其调整大小的算法,但是您可以通过几次计算获得非常接近的结果。首先将imageView的内容模式设置为.scaleAspectFill
。创建一个变量,以容纳所需的最大宽度和最大高度。将图像宽度与最大宽度进行比较,如果图像较宽,则将最大宽度除以图像宽度,以获得缩放乘数,然后将高度乘以该乘数。如果宽度不大于最大宽度,则检查高度是否大于最大高度,并且是否大于比例尺和图像宽度。对于计算出的宽度或高度,您将要确保两者都不大于各自的最大值。
let image = UIImage(named: "myImage")
let calculatedSize = calculateSize(for: image)
myImageView.frame = CGRect(origin: myImageView.frame.origin, size: calculatedSize)
myImageView.contentMode = .scaleAspectFill
myImageView.clipsToBounds = true
myImageView.layer.cornerRadius = 15
func calculateSize(for image: UIImage?) -> CGSize {
guard let image = image else { return .zero }
let widthMax: CGFloat = 260
let heightMax: CGFloat = 350
var width: CGFloat = image.size.width
var height: CGFloat = image.size.height
var multiplier: CGFloat = 1.0
if width > widthMax {
multiplier = widthMax / width
width = widthMax
height = min(heightMax, height * multiplier)
} else if height > heightMax {
multiplier = heightMax / height
width = min(widthMax, width * multiplier)
height = heightMax
}
return CGSize(width: width, height: height)
}
以上是关于iMessage App如何调整图像大小并保持纵横比的主要内容,如果未能解决你的问题,请参考以下文章