質問

NSData から UIImage オブジェクトをロードしようとしていますが、サンプルコードは NSImage でしたが、同じであるはずです。しかし、今画像を読み込んでいるので、 NSData の読み込み問題の UIImage をトラブルシューティングするのに最適なものは何だろうと思います。

役に立ちましたか?

解決

UIImageには- initWithData:メソッドがあります。ドキュメントから:"データパラメーターのデータは、システムがサポートしている画像タイプのいずれかのファイル形式に一致するようにフォーマットする必要があります。

他のヒント

以前は UIImageJPEGRepresentation()を試しませんでしたが、 UIImagePNGRepresentation はうまく機能し、 NSData UIImageの間の変換はうまくいきます。 は非常に単純です:

NSData *imageData = UIImagePNGRepresentation(image);
UIImage *image=[UIImage imageWithData:imageData];

これを試して、画像をNSdataに変換します:

UIImage *img = [UIImage imageNamed:@"image.png"];
NSData *data1 = UIImagePNGRepresentation(img);

theDataは、すでにデータが含まれている NSData オブジェクトでなければなりません。使用する前に、 NSData オブジェクトにファイルのロード/ダウンロードを行う必要があります。 theDataで NSLog を使用して検査し、有効なデータが含まれているかどうかを確認できます。

コードを安全に実行するには、UIImagePNGRepresentation関数が返すオプションの値として、Dataでif-letブロックを使用します。

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

注:データはSwift 3クラスです。 NSDataの代わりにDataを使用します   Swift 3

一般的な画像操作(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...
     }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top