iMessage App如何调整图像大小并保持纵横比

【iMessage App如何调整图像大小并保持纵横比】大道之行,天下为公。这篇文章主要讲述iMessage App如何调整图像大小并保持纵横比相关的知识,希望能为你提供帮助。
我不清楚问题是否明确。但是我想知道当我们发送图像时,iMessage App如何调整图像的大小。让我向您展示一下。.
我在这里发送尺寸为1668x2500的图像
但是当我用Photoshop测量保存的屏幕截图时,如黑色矩形所示,它显示:846x1128
我必须在该点箭头的右下角末端测量图像。因为图像是如此之大,而困惑却掩盖了该图像。

iMessage App如何调整图像大小并保持纵横比

文章图片

并且我尝试了另一幅不同尺寸的图像,如下表所示:渲染大小是指设备由Photoshop测量的大小。
iMessage App如何调整图像大小并保持纵横比

文章图片

据我所知。 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 = 15func calculateSize(for image: UIImage?) -> CGSize {guard let image = image else { return .zero }let widthMax: CGFloat = 260 let heightMax: CGFloat = 350var width: CGFloat = image.size.width var height: CGFloat = image.size.height var multiplier: CGFloat = 1.0if 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如何调整图像大小并保持纵横比

文章图片


    推荐阅读