有一些类似的问题,但大多数与目标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参数的来源。