4

我想将图像保存在数据库中。因此我将其转换为数据。然而,在这些步骤中,图像的宽度和高度会发生变化。它的尺寸增加了。

// Original Image Size
print("Original Image Size : \(capturedImage.size)") // Displays (320.0, 427.0)

// Convert to Data
var imageData: Data?
imageData = UIImagePNGRepresentation(capturedImage)

// Store imageData into Db.

// Convert it back
m_CarImgVw.image = UIImage(data: damageImage!.imageData!, scale: 1.0)
print("m_CarImgVw Image Size : \(m_CarImgVw.image.size)") // Displays (640.0, 854.0)

我不希望图像大小增加!

4

2 回答 2

7

如果它最初是您资产中的图像,它可能是@2x,这意味着以像素为单位的大小(实际大小)是 pts 大小(显示大小)的两倍。所以图像大小实际上并没有增加,它在变换前后是 640x854。只是在操作系统自动缩放它之前,因为它被命名为@2x。

要使用原始图像比例,您可以将 1.0 替换为capturedImage.scale.

于 2017-12-14T15:04:37.087 回答
5

您的问题出在这一行:

m_CarImgVw.image = UIImage(data: damageImage!.imageData!, scale: 1.0)

你能看见它吗?

提示:它在scale: 1.0.

看起来您的原始图像是 Retina(或 @2x),所以它的比例为 2.0。

因此,您应该将原始图像比例 ( damageImage.scale) 放在那里,或者如果您在屏幕上呈现图像,则应该使用UIScreen's scale

于 2017-12-14T15:07:27.400 回答