[英]Convert UIImage to NSData and convert back to UIImage in Swift?
[英]convert UIImage to NSData and back 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];
要將UIImage
轉換為NSData
,請使用UIImageJPEGRepresentation(UIImage *image, CGFloat compressionQuality)
或UIImagePNGRepresentation(UIImage *image)
要將NSData
轉換為UIImage
,請使用[UIImage imageWithData:imageData]
所以你的例子看起來像這樣:
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];
參考文獻: 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
試試這個:
使用UIImage
轉換為NSData
。
NSData *imagedata = UIImagePNGRepresentation(thumbnail);
嘗試將此圖像數據轉換回UIImage
UIImage *image= [UIImage imageWithData:imagedata];
在Swift版本中:
let imageData = UIImagePNGRepresentation(image!)!
let imageFromData = UIImage(data: imageData)
使用if-let阻止數據以防止應用程序崩潰和安全執行代碼,因為函數UIImagePNGRepresentation返回一個可選值。
if let img = UIImage(named: "TestImage.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: "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...
}
}
通過使用擴展名:
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...
}
}
從圖像轉換數據:
請嘗試JPEG或PNG表示,具體取決於您的圖像格式:
UIImageJPEGRepresentation
以JPEG格式返回指定圖像的數據。
NSData * UIImageJPEGRepresentation (
UIImage *image,
CGFloat compressionQuality
);
UIImagePNGRepresentation
以PNG格式返回指定圖像的數據
NSData * UIImagePNGRepresentation (
UIImage *image
);
例:
extension UIImage {
var pngRepresentationData: Data? {
return UIImagePNGRepresentation(img)
}
var jpegRepresentationData: Data? {
return UIImageJPEGRepresentation(self, 1.0)
}
}
使用:
let data = myImage.jpegRepresentationData
let data1 = myImage.pngRepresentationData
從數據轉換圖像:
let image = UIImage(data: data)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.