我正在尝试从NSData
中加载UIImage
对象,示例代码是针对NSImage
的,我猜它们应该是相同的。但是在加载图像时,我想知道如何最好地解决UIImage
加载NSData
问题。
我正在尝试从NSData
中加载UIImage
对象,示例代码是针对NSImage
的,我猜它们应该是相同的。但是在加载图像时,我想知道如何最好地解决UIImage
加载NSData
问题。
我以前没有尝试过UIImageJPEGRepresentation()
,但UIImagePNGRepresentation
对我很有效,并且在NSData
和UIImage
之间的转换非常简单:
NSData *imageData = UIImagePNGRepresentation(image);
UIImage *image=[UIImage imageWithData:imageData];
UIImage有一个名为-initWithData:
的方法。从文档中可以得知:"data参数中的数据必须按照系统支持的图像类型之一的文件格式进行格式化。"
尝试使用以下代码将图像转换为NSData:
UIImage *img = [UIImage imageNamed:@"image.png"];
NSData *data1 = UIImagePNGRepresentation(img);
theData应该是一个包含数据的NSData
对象。在使用之前,您需要将文件加载/下载到NSData
对象中。您可以通过在theData上使用NSLog
来检查它是否包含有效数据。
if let img = UIImage(named: "Hello.png") {
if let data:Data = UIImagePNGRepresentation(img) {
// Handle operations with data here...
}
}
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...
}
}