Swift 4 - 将字符串转换为UIImage

时间:2018-01-13 19:32:12

标签: ios swift string uiimage swift4

有一些类似的问题,但大多数与目标C有关,我无法找到解决方案。

如何在Swift 4中将String转换为UIImage?这就是我到目前为止所做的:

func convertStringToUIImage (image: String) -> UIImage {

    let imageData = image.data(using: String.Encoding.utf8)
    print ("imageData: ", imageData!)

    let base64Image = imageData!.base64EncodedString(options: NSData.Base64EncodingOptions(rawValue: 0))
    print ("base64Image: ", base64Image)

    let base64ImageAsData =  Data(base64Encoded: base64Image as String, options: NSData.Base64DecodingOptions())
    print ("base64ImageAsData: ", base64ImageAsData!)

    let dataAsUIImage = UIImage(data: base64ImageAsData!)
    print ("dataAsUIImage: ", dataAsUIImage)

    if dataAsUIImage != nil {

        print (dataAsUIImage)
        return dataAsUIImage!

    } else {

        print (dataAsUIImage)
        return #imageLiteral(resourceName: "DefaultImage.jpg")

    }

}

然后在我的控制台中返回以下事件序列。前两个是来自早期的印刷声明,但是那个' lastValue' string是我想要转换的字符串:

Test Guy 
lastValue =  105827994889760
imageData:  15 bytes
base64Image:  MTA1ODI3OTk0ODg5NzYw
base64ImageAsData:  15 bytes
dataAsUIImage:  nil
nil

传递给函数的image参数是我写的另一个函数的结果 - convertUIImageToString(image:UIImage)。它存储在String字典中:

func convertUIImageToString (image: UIImage) -> String {

    var imageAsData: Data = UIImagePNGRepresentation(image)!
    var imageAsInt: Int = 0 // initialize

    let data = NSData(bytes: &imageAsData, length: MemoryLayout<Int>.size)
    data.getBytes(&imageAsInt, length: MemoryLayout<Int>.size)

    let imageAsString: String = String (imageAsInt)

    return imageAsString

}

Xcode告诉我UIImage(data:dataSource)将返回&#34;初始化的UIImage对象,如果方法无法从指定数据初始化图像,则返回nil。&#34;它返回零,那么为什么它不能读取我指定的数据?

编辑:添加了我的convertUIImageToString函数,以阐明convertStringtoUIImage中image参数的来源。

0 个答案:

没有答案