2017-06-19 2 views
0

をチェックし、私は画像のサイズを取得しようとしていながら、コードで、ここでUIImagePickerメモリの問題画像サイズに

を経由して選んだ:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 

    let image = info[UIImagePickerControllerOriginalImage] as! UIImage 
    var imgData: NSData = NSData(data: UIImageJPEGRepresentation((image), 1)!) 
    var imageSize: Int = imgData.length 
    print("size of image in KB: %f ", Double(imageSize)/1024.0) 
} 

これは、エラーがスローされます。

Message from Debugger: Terminated due to Memory issue.

注:イメージファイルのサイズは、ディスク上で約75 MBでした。それはより小さいサイズの画像のためにうまくいきます。

+0

あなたは既にイメージを持っている、そして、あなたはそのJPEG表現をとることによって、その画像の全体_new_バージョンを作成し、あなたは_that_をメモリに保持しています。そして、あなたは_that_からNSDataを取り出し、メモリに_that_を保持します。メモリが足りなくなったら驚いていますか?とにかく質問は正確に何ですか?あなたは最終的には何をしたいのですか? – matt

+0

私は基本的に30メガバイト未満の場合に限り、ユーザーにイメージを表示したいと思う。だから私はサイズを確認する必要があります。私はこの問題を理解していますが、解決策を見つけることができません。 –

+0

私が言っていることは、あなたがイメージを持っているということです。サイズを確認することができます。あなたがやっていることだけである何かのサイズをチェックする必要はありません。しかし、私はまた言っています:あなたは、ユーザーに30 MBのイメージを「表示」するつもりはありません。それはばかげているだろう。画面はそのような画像を保持することはできません!表示のために必要なイメージのバージョンを常にロードしてください。 – matt

答えて

0

FileManagerを使用して、ファイルサイズ(およびその他の属性)を確認できます。選択した画像のURLを取得するには、UIImagePickerControllerOriginalImageキーがあります。それはあなたのファイルのURLを与え、あなたは次のように、FileManagerのにそれを渡すことができます:

if let imgURL : URL = info[UIImagePickerControllerOriginalImage] as? URL, 
let attribs = try? FileManager.default.attributesOfItem(atPath: imgURL.path) { 
    let size = attribs[FileAttributeKey.size] 
    print(size) 
} 
関連する問題