我正在尝试从 加载UIImage
对象NSData
,而示例代码是 to NSImage
,我想它们应该是相同的。但是刚刚加载图像,我想知道解决UIImage
加载NSData
问题的最佳方法是什么。
BlueDolphin
问问题
76389 次
5 回答
106
我以前没有尝试UIImageJPEGRepresentation()
过,但UIImagePNGRepresentation
对我来说效果很好,并且在NSData
and之间进行转换UIImage
非常简单:
NSData *imageData = UIImagePNGRepresentation(image);
UIImage *image=[UIImage imageWithData:imageData];
于 2011-03-10T15:59:39.840 回答
44
UIImage 有一个 -initWithData:
方法。来自文档:“数据参数中的数据必须经过格式化以匹配系统支持的图像类型之一的文件格式。”
于 2008-11-02T22:04:09.880 回答
21
试试这个将图像转换为 NSdata:
UIImage *img = [UIImage imageNamed:@"image.png"];
NSData *data1 = UIImagePNGRepresentation(img);
于 2011-08-10T13:13:30.747 回答
3
theData 应该是一个NSData
已经包含数据的对象。您需要在NSData
使用之前将文件加载/下载到对象。您可以使用NSLog
on theData 来检查它,看看它是否包含有效数据。
于 2008-11-03T08:25:30.390 回答
-1
为了安全地执行代码,使用带有数据的 if-let 块,作为 UIImagePNGRepresentation 函数返回的可选值。
if let img = UIImage(named: "Hello.png") {
if let data:Data = UIImagePNGRepresentation(img) {
// Handle operations with data here...
}
}
注意:数据是 Swift 3 类。在 Swift 3 中使用 Data 而不是 NSData
通用图像操作(如 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...
}
}
于 2017-09-06T10:44:22.150 回答