NSData和UIImage
-
05-07-2019 - |
题
我正在尝试从 NSData
加载 UIImage
对象,示例代码是 NSImage
,我猜它们应该是一样的。但是刚刚加载图像,我想知道什么是解决 UIImage
加载 NSData
问题的最佳方法。
解决方案
UIImage有一个 - initWithData:
方法。从文档:“数据参数中的数据必须格式化以匹配系统支持的图像类型之一的文件格式。”
其他提示
之前我没有尝试 UIImageJPEGRepresentation()
,但 UIImagePNGRepresentation
对我来说很好,并且 NSData
和 UIImage之间的转换
很简单:
NSData *imageData = UIImagePNGRepresentation(image);
UIImage *image=[UIImage imageWithData:imageData];
尝试将图像转换为NSdata:
UIImage *img = [UIImage imageNamed:@"image.png"];
NSData *data1 = UIImagePNGRepresentation(img);
theData应该是已经包含数据的 NSData
对象。在使用之前,您需要将文件加载/下载到 NSData
对象。您可以使用Data上的 NSLog
检查它,看它是否包含有效数据。
为了安全执行代码,使用带有Data的if-let块,因为函数UIImagePNGRepresentation返回,可选值。
if let img = UIImage(named: "Hello.png") {
if let data:Data = UIImagePNGRepresentation(img) {
// Handle operations with data here...
}
}
注意:数据是Swift 3类。使用数据而不是NSData 斯威夫特3
通用图像操作(如png& jpg):
if let img = UIImage(named: "Hello.png") {
if let data:Data = UIImagePNGRepresentation(img) {
handleOperationWithData(data: data)
} else if let data:Data = UIImageJPEGRepresentation(img, 1.0) {
handleOperationWithData(data: data)
}
}
*******
func handleOperationWithData(data: Data) {
// Handle operations with data here...
if let image = UIImage(data: data) {
// Use image...
}
}
使用扩展名:
extension UIImage {
var pngRepresentationData: Data? {
return UIImagePNGRepresentation(img)
}
var jpegRepresentationData: Data? {
return UIImageJPEGRepresentation(self, 1.0)
}
}
*******
if let img = UIImage(named: "Hello.png") {
if let data = img.pngRepresentationData {
handleOperationWithData(data: data)
} else if let data = jpegRepresentationData {
handleOperationWithData(data: data)
}
}
*******
func handleOperationWithData(data: Data) {
// Handle operations with data here...
if let image = UIImage(data: data) {
// Use image...
}
}
不隶属于 StackOverflow