###前提・実現したいこと
フォトアルバムの画像から階調値を得て、その配列を初期値として画像を与えたぐらいの速度で表示したいです。
###発生している問題・エラーメッセージ
初期値として与えた画像だと処理が早いのですが、フォトアルバムから開いて表示した画像だと処理が重くなります。
###該当のソースコード
swift
1class ViewController: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate { 2・・・ 3 //初期値として与えた画像(本来はViewDidRoad内に書いています) 4 // imageView.image = UIImage(named: "sheep") 5・・・ 6 @IBOutlet weak var imageView: UIImageView! 7 //フォトアルバムから画像を選択 8 @IBAction func showAlbum(_ sender: UIButton) { 9 10 if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.photoLibrary) { 11 let controller = UIImagePickerController() 12 controller.delegate = self 13 controller.sourceType = UIImagePickerControllerSourceType.photoLibrary 14 self.present(controller, animated: true, completion: nil) 15 } 16} 17 18 // 写真選択時に呼ばれる 19 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 20 21 let image: UIImage = (info[UIImagePickerControllerOriginalImage] as? UIImage)! 22 // ImageViewにその画像を設定 23 self.imageView.image = image 24 25 self.dismiss(animated: true, completion: nil) 26 } 27//配列を表示するボタン 28 @IBAction func writeToView(_ sender: UIButton) { 29 var bright = [Double]() 30 //画像を指定 31 let image = imageView.image?.cgImage 32 33 //Brightnessクラスを実行し配列brightに追加 34 if let brightness = Brightness(myImage: image!) { 35 for y in 0..<brightness.height{ 36 for x in 0..<brightness.width{ 37 bright.append(brightness[x,y]) 38 } 39 } 40 } 41 } 42
swift
1class Brightness { 2 3 var width : Int 4 var height : Int 5 var pixelData : Data 6 let bytesPerRow : Int 7 8 init? (myImage: CGImage) { 9 10 pixelData = myImage.dataProvider!.data! as Data 11 width = myImage.width 12 height = myImage.height 13 bytesPerRow = myImage.bytesPerRow; 14 15 } 16 17 func getPixelColorFromUIImage(x: Int,y: Int) -> Double { 18 19...
###試したこと
クラスに問題があるのではと思い、アルバムからではなく、初期値として画像を与えた場合は、アプリが落ちることなく動作しました。
どうすれば素早く処理させることができるのでしょうか?イタリックテキスト
回答1件
あなたの回答
tips
プレビュー