ios 将 UIImage 转换为 NSData 并返回 UIImage
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/20013144/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
convert UIImage to NSData and back to UIImage
提问by user2769614
I have to populate table cell from database and images are on device.
I've to store that image in imageDataObject
, how to convert that UIImage
to NSData
.
Please suggest, I tried many solution but it's not converting back that NSData
to UIImage
.
我必须从数据库填充表格单元格,图像在设备上。我已经存储在图像imageDataObject
,如何将其转换UIImage
到NSData
。请建议,我尝试了许多解决方案,但它不转换回该NSData
给UIImage
。
cell.textLabel.text = [[offlineImageListArray objectAtIndex:indexPath.row] imageName];
UIImage *thumbnail = [self retrieveImageFromDevice:[[offlineImageListArray objectAtIndex:indexPath.row] imageName]];
NSData* data = ??????????;
ImageData *imageDataObject = [[ImageData alloc] initWithImageId:[[offlineImageListArray objectAtIndex:indexPath.row]imageId]
imageName:[[offlineImageListArray objectAtIndex:indexPath.row] imageName] imageData:data];
[imagesArray addObject:imageDataObject];
回答by James Glenn
To convert UIImage
to NSData
, use either UIImageJPEGRepresentation(UIImage *image, CGFloat compressionQuality)
or UIImagePNGRepresentation(UIImage *image)
要转换UIImage
为NSData
,请使用UIImageJPEGRepresentation(UIImage *image, CGFloat compressionQuality)
或UIImagePNGRepresentation(UIImage *image)
To convert NSData
to UIImage
, use [UIImage imageWithData:imageData]
要转换NSData
为UIImage
,请使用[UIImage imageWithData:imageData]
So your example could look like this:
所以你的例子可能是这样的:
cell.textLabel.text = [[offlineImageListArray objectAtIndex:indexPath.row] imageName];
UIImage *thumbnail = [self retrieveImageFromDevice:[[offlineImageListArray objectAtIndex:indexPath.row] imageName]];
NSData* data = UIImagePNGRepresentation(thumbnail);
ImageData *imageDataObject = [[ImageData alloc] initWithImageId:[[offlineImageListArray objectAtIndex:indexPath.row]imageId] imageName:[[offlineImageListArray objectAtIndex:indexPath.row] imageName] imageData:data];
[imagesArray addObject:imageDataObject];
References: https://developer.apple.com/LIBRARY/IOS/documentation/UIKit/Reference/UIKitFunctionReference/Reference/reference.htmlhttps://developer.apple.com/Library/ios/documentation/UIKit/Reference/UIImage_Class/Reference/Reference.html
参考资料:https: //developer.apple.com/LIBRARY/IOS/documentation/UIKit/Reference/UIKitFunctionReference/Reference/reference.html https://developer.apple.com/Library/ios/documentation/UIKit/Reference/UIImage_Class /Reference/Reference.html
回答by Pradhyuman sinh
Try With this:
试试这个:
Use this for convert UIImage
to NSData
.
将此用于转换UIImage
为NSData
.
NSData *imagedata = UIImagePNGRepresentation(thumbnail);
Try this for image data convert back to UIImage
试试这个图像数据转换回 UIImage
UIImage *image= [UIImage imageWithData:imagedata];
回答by Bilal Arslan
in Swift version:
在 Swift 版本中:
let imageData = UIImagePNGRepresentation(image!)!
let imageFromData = UIImage(data: imageData)
回答by Krunal
Use if-let block with Data to prevent app crash & safe execution of code, as function UIImagePNGRepresentation returns an optional value.
使用带有数据的 if-let 块来防止应用程序崩溃和安全执行代码,因为函数 UIImagePNGRepresentation 返回一个可选值。
if let img = UIImage(named: "TestImage.png") {
if let data:Data = UIImagePNGRepresentation(img) {
// Handle operations with data here...
}
}
Note: Datais Swift 3 class. Use Data instead of NSData with Swift 3
注意:数据是 Swift 3 类。在 Swift 3 中使用 Data 而不是 NSData
Generic image operations (like png & jpg both):
通用图像操作(如 png 和 jpg 两者):
if let img = UIImage(named: "TestImage.png") { //UIImage(named: "TestImage.jpg")
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...
}
}
By using extension:
通过使用扩展:
extension UIImage {
var pngRepresentationData: Data? {
return UIImagePNGRepresentation(img)
}
var jpegRepresentationData: Data? {
return UIImageJPEGRepresentation(self, 1.0)
}
}
*******
if let img = UIImage(named: "TestImage.png") { //UIImage(named: "TestImage.jpg")
if let data = img.pngRepresentationData {
handleOperationWithData(data: data)
} else if let data = img.jpegRepresentationData {
handleOperationWithData(data: data)
}
}
*******
func handleOperationWithData(data: Data) {
// Handle operations with data here...
if let image = UIImage(data: data) {
// Use image...
}
}
回答by Vicky Prajapati
Convert Data from Image:
从图像转换数据:
Try JPEG or PNG representation depending on your image format:
根据您的图像格式尝试 JPEG 或 PNG 表示:
UIImageJPEGRepresentation
Returns the data for the specified image in JPEG format.
UIImageJPEG 表示
以 JPEG 格式返回指定图像的数据。
NSData * UIImageJPEGRepresentation (
UIImage *image,
CGFloat compressionQuality
);
UIImagePNGRepresentation
Returns the data for the specified image in PNG format
UIImagePNG 表示
以PNG格式返回指定图像的数据
NSData * UIImagePNGRepresentation (
UIImage *image
);
Example:
例子:
extension UIImage {
var pngRepresentationData: Data? {
return UIImagePNGRepresentation(img)
}
var jpegRepresentationData: Data? {
return UIImageJPEGRepresentation(self, 1.0)
}
}
Use:
用:
let data = myImage.jpegRepresentationData
let data1 = myImage.pngRepresentationData
Convert Image from Data:
从数据转换图像:
let image = UIImage(data: data)