我在我的iOS应用程序中遇到了一个与图像大小调整和上传相关的特殊问题.在上传到服务器之前,我实现了一种调整图像大小以适应特定大小范围(最小大小:320px,最大大小:1536px)的方法.调整大小似乎工作得很好,通过在调整大小后直接判断UIImage来验证这一点.然而,当我将调整大小的图像转换为数据(JPEG格式)以准备上传时,它似乎恢复到了原始大小或不保持调整后的尺寸.
下面是我正在使用的调整大小的方法:
func resizedImage(minimumSize: CGFloat, maximumSize: CGFloat) -> UIImage? {
let originalWidth = size.width
let originalHeight = size.height
var scaleFactor: CGFloat
var newWidth: CGFloat
var newHeight: CGFloat
if originalWidth < minimumSize || originalHeight < minimumSize {
scaleFactor = max(minimumSize / originalWidth, minimumSize / originalHeight)
} else if originalWidth > maximumSize || originalHeight > maximumSize {
scaleFactor = min(maximumSize / originalWidth, maximumSize / originalHeight)
} else {
scaleFactor = 1.0
}
newWidth = originalWidth * scaleFactor
newHeight = originalHeight * scaleFactor
UIGraphicsBeginImageContextWithOptions(CGSize(width: newWidth, height: newHeight), false, 0)
draw(in: CGRect(x: 0, y: 0, width: newWidth, height: newHeight))
let resizedImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return resizedImage
}
在重新加载之后,当我试图将调整大小的UI Image转换为如下数据时:
if let resizedImage = resizedImage(minimumSize: 320, maximumSize: 1536) {
let imageData = resizedImage.jpegData(compressionQuality: 1.0)
// Proceed to upload imageData
}
尽管有了默认值,imageData
似乎反映了原始图像的大小,而不是调整大小的一个.此问题发生在上传之前,在为请求主体准备图像数据期间.目标是确保上传到服务器的映像遵守指定的大小限制.在数据转换过程中,是否有什么我忽略了可能导致图像恢复到原始尺寸的东西?
任何关于如何确保调整大小的图像在转换为上传数据时保持其尺寸的建议或见解都将不胜感激.谢谢!