web-dev-qa-db-ja.com

UIImageをNSDataに変換し、UIImageに戻す

データベースからテーブルセルを入力する必要があります。画像はデバイス上にあります。その画像をimageDataObjectに保存する必要があります。そのUIImageNSDataに変換する方法を教えてください。提案してください、私は多くの解決策を試しましたが、そのNSDataUIImageに変換し直していません。

    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];
9
user2769614

UIImageNSDataに変換するには、UIImageJPEGRepresentation(UIImage *image, CGFloat compressionQuality)またはUIImagePNGRepresentation(UIImage *image)を使用します

NSDataUIImageに変換するには、[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.htmlhttps://developer.Apple.com/ Library/ios/documentation/UIKit/Reference/UIImage_Class/Reference/Reference.html

18
James Glenn

これで試してください:

これをUIImageNSDataに変換するために使用します。

  NSData *imagedata = UIImagePNGRepresentation(thumbnail);

画像データをUIImageに変換して戻すには、これを試してください

  UIImage *image= [UIImage imageWithData:imagedata];
9
Pradhyuman sinh

Swiftバージョン:

    let imageData = UIImagePNGRepresentation(image!)!
    let imageFromData = UIImage(data: imageData)
3
Bilal Arslan

画像からデータを変換:

画像形式に応じて、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)
0
Vicky Prajapati

関数UIImagePNGRepresentationがオプションの値を返すため、データでif-letブロックを使用して、アプリのクラッシュとコードの安全な実行を防止します。

if let img = UIImage(named: "TestImage.png") {
    if let data:Data = UIImagePNGRepresentation(img) {
       // Handle operations with data here...         
    }
}

注意: データ is Swift 3class。NSDataの代わりにSwift 3

一般的な画像操作(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...
     }
}
0
Krunal