【iMessage App如何调整图像大小并保持纵横比】大道之行,天下为公。这篇文章主要讲述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 = 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)
}
文章图片
推荐阅读
- Firebase Android(数据库增长时出现问题)
- 获取用户在Android中的位置的好方法
- 如何根据Android中当前位置的距离对地理点进行排序
- Android Studio Geolocation功能
- Android Google Map如何检查gps位置是否在圈内
- Android(GPS位置无法正常工作)
- 如何创建基于位置的AR android应用程序
- 如果设备已经在Geofence android内部,则停止初始触发
- osmdroid和Android应用程序的geopoint是否不同()