22

UIIMageを保存してから取得し、表示しようとしています。バンドルに画像を保存し、そこから取得して表示することで成功しました。私の問題は、画像をディスクに保存(NSDataに変換)してから取得しようとしたときに発生します。私はそのように画像をNSDataに変換します...

NSData* topImageData = UIImageJPEGRepresentation(topImage, 1.0);

それから私はそれをそのようにディスクに書き込みます...

[topImageData writeToFile:topPathToFile atomically:NO];

それから私はそれをそのように検索しようとしました...

topSubView.image = [[UIImage alloc] initWithContentsOfFile:topPathToFile];

これは画像を返しません(サイズはゼロです)。だから私は試しました...

NSData *data = [[NSData alloc] initWithContentsOfFile:topPathToFile];
topSubView.image = [[UIImage alloc] initWithData:data];

無駄に。デバッガーをステップスルーすると、データに正しいバイト数が含まれていることがわかりますが、イメージが作成されない理由について混乱しています。私は一歩を逃していますか?画像に変換する前にNSDataで何かをする必要がありますか?

4

5 に答える 5

34

このコードを試してください。これは私にとってはうまくいきました。

データを保存しています。

画像を保存するパスを作成します。

let libraryDirectory = NSSearchPathForDirectoriesInDomains(.libraryDirectory,
                                                               .userDomainMask,
                                                               true)[0]
let libraryURL = URL(fileURLWithPath: libraryDirectory, isDirectory: true)
let fileURL = libraryURL.appendingPathComponent("image.data")

画像を Data オブジェクトに変換し、ファイルに保存します。

let data = UIImageJPEGRepresentation(myImage, 1.0)
try? data?.write(to: fileURL)

保存した画像の取得

let newImage = UIImage(contentsOfFile: fileURL.relativePath)

イメージビューを作成し、取得したイメージをロードします。

let imageView = UIImageView(image: newImage)
self.view.addSubview(imageView)
于 2011-04-19T06:59:40.267 に答える
19

UIImage のクラス メソッドを使用できる必要があります。

[UIImage imageWithContentsOfFile:topPathToFile]; 

また

[UIImage imageWithData:data];

それはうまくいきませんでしたか?

お役に立てれば!

于 2010-02-10T23:23:46.340 に答える
0

これをチェックしてください: http://www.nixwire.com/getting-uiimage-to-work-with-nscoding-encodewithcoder/

それはまさにあなたの問題に対する解決策だと私が思うものです。それが常識的に示唆されていることですが、NSData からイメージを作成することはできません。UIImagePNGRepresentation を使用する必要があります。これが役立つかどうか教えてください。

于 2011-02-06T08:44:37.497 に答える