【发布时间】:2020-11-19 12:54:05
【问题描述】:
我目前正在尝试做一些相当简单的事情...只是尝试在 Swift 5 中解码然后编码图像。
我已经能够看到我的图像确实是正确的,但似乎每当我尝试在 Swift 中编码 base64 字符串时,它根本不会加载到我的 UIImageView 中。
我已在在线转换器中运行 base64 解码字符串,并且图像格式正确。
我做了什么蠢事吗?非常感谢您提供的任何帮助!
解码过程(目前似乎正在运行)
let b64 = UIImagePNGRepresentation(tempImage);
var tempImage2 = b64?.base64EncodedString(options: .endLineWithLineFeed);
if (tempImage2 == nil) {
tempImage2 = "";
}
以及编码过程/加载到图像视图中:
if let data = Data(base64Encoded: tempImage2!, options: .ignoreUnknownCharacters) {
var useImage = UIImage(data: data);
imageView.image = useImage
print("and now the image view should show it??");
}
在打印解码后的 base64 时,一切似乎都是正确的。然而,一旦我运行编码,我的 UIImageView 中没有任何内容被加载 - 只是空白。
【问题讨论】:
-
你能把这两个数据保存在内存中吗?并检查它们是否相等?如果没有,可能希望将其打印为字符串,例如作为十六进制字符串(参见stackoverflow.com/questions/39075043/…)并比较输出?
-
嗨拉姆 - 感谢您的帮助。该变量绝对不是 nil 并且 tempImage2 var 确实在内存中。好像是编码不对。
-
我的意思是保留
b64和data,并做print("b64 \(b64 == data ? "=" : !)= data)就像一个快速测试:extension someStructorClass { static var b64: Data?; static var decodedb64: Data?}并尽可能比较它们。 -
哦,我明白了。让我运行它。
-
刚刚测试了你的代码;在我的机器上它可以工作。除了编译器抱怨
UIImagePNGRepresentation(tempImage)应该被tempImage.pngData()替换。