質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

585閲覧

Swift フォトアルバムから設定した画像だとなぜ処理が遅いのか

maru.wk

総合スコア30

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/11/03 09:37

###前提・実現したいこと
フォトアルバムの画像から階調値を得て、その配列を初期値として画像を与えたぐらいの速度で表示したいです。
###発生している問題・エラーメッセージ
初期値として与えた画像だと処理が早いのですが、フォトアルバムから開いて表示した画像だと処理が重くなります。

###該当のソースコード

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...

###試したこと
クラスに問題があるのではと思い、アルバムからではなく、初期値として画像を与えた場合は、アプリが落ちることなく動作しました。

どうすれば素早く処理させることができるのでしょうか?イタリックテキスト

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aja

2017/11/04 09:48

フォトアルバムの画像と、「初期値として与えた画像だと処理が早い」という画像はエンコードやファイルサイズ等々が同じでしょうか、あるいはその画像をそのままフォトアルバムに入れても同じでしょうか。
maru.wk

2017/11/04 10:41

ファイルサイズは同一です。フォトアルバムに入れることは試しておりませんでした。
maru.wk

2017/11/05 03:47

自分の勘違いでした。画像のピクセル数がかなり二つの画像で異なっていたためだと考えられます。リサイズでピクセル数を減らして、もう一度試してみます。
guest

回答1

0

自己解決

すみません。自分の勘違いで、輝度値はすぐに求めることができていました。描写に時間がかかっているだけでした

投稿2017/11/06 01:44

maru.wk

総合スコア30

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問