从swift 3中的数据转换图像大小时调整大小

Sab*_*abs 2 nsdata ios uiimagepngrepresentation swift swift3

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

// 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)
Run Code Online (Sandbox Code Playgroud)

我不希望图像大小增加!

Dav*_*rry 5

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

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


use*_*434 5

你的问题在这一行:

m_CarImgVw.image = UIImage(data: damageImage!.imageData!, scale: 1.0)
Run Code Online (Sandbox Code Playgroud)

你能看见它吗?

提示:它在scale: 1.0.

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

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