NSDataとUIImage
-
05-07-2019 - |
質問
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...
}
}
所属していません StackOverflow