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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iMessage App如何调整图像大小并保持纵横比相关的知识,希望对你有一定的参考价值。

我不清楚问题是否明确。但是我想知道当我们发送图像时,iMessage App如何调整图像的大小。让我向您展示一下。.

我在这里发送尺寸为1668x2500的图像

但是当我用Photoshop测量保存的屏幕截图时,如黑色矩形所示,它显示:846x1128

我必须在该点箭头的右下角末端测量图像。因为图像是如此之大,而困惑却掩盖了该图像。

enter image description here

并且我尝试了另一幅不同尺寸的图像,如下表所示:渲染大小是指设备由Photoshop测量的大小。

enter image description here

据我所知。 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)
}

result in a tableView

以上是关于iMessage App如何调整图像大小并保持纵横比的主要内容,如果未能解决你的问题,请参考以下文章

通过保护 Django 上的纵横比来调整照片大小

调整大小后通过鼠标连续调整其余图像的大小,并保持比例

通过保持纵横比和宽度调整 UIImage 的大小

使用 CSS 调整图像大小以适合容器

如何在保持图像纵横比的同时调整 UIButton 中的图像大小?

以统一大小调整多个图像的大小并保持比例