【问题标题】:Swift Base64 Decode then Encode into UIImageSwift Base64 解码然后编码成 UIImage
【发布时间】: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 确实在内存中。好像是编码不对。
  • 我的意思是保留b64data,并做print("b64 \(b64 == data ? "=" : !)= data) 就像一个快速测试:extension someStructorClass { static var b64: Data?; static var decodedb64: Data?} 并尽可能比较它们。
  • 哦,我明白了。让我运行它。
  • 刚刚测试了你的代码;在我的机器上它可以工作。除了编译器抱怨UIImagePNGRepresentation(tempImage)应该被tempImage.pngData()替换。

标签: ios swift base64


【解决方案1】:

事实证明,上面的代码适用于在 Swift 中对 base64 进行解码和编码。然而,问题在于这段代码之后发生了什么。

原来我在 imageView 上弄乱了一些东西,把它作为子视图重用,大大复杂化了这个过程。

谢谢大家的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-10
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多