Androidアプリ開発の勉強中です。
60KBほどの画像をインターネットからダウンロードして画面に置かれたImageViewにセットしたいのですが、
SkImageDecoder::Factory returned nullと出てしまいます。
下記のようなコードになっています。このページを参考に書きました。
Kotlin
1 2 fun onbuttonclick(v:View) { 3 imageDownload().execute() 4 } 5 6 private inner class imageDownload: AsyncTask<String,String,Bitmap>() { 7 override fun doInBackground(vararg params: String?): Bitmap? { 8 var image: Bitmap? = null 9 val url = URL("https://d.kuku.lu/fd1b1dbeb9") 10 11 val con = url.openConnection() as HttpURLConnection 12 con.connectTimeout = 10000 13 con.readTimeout = 10000 14 con.requestMethod = "GET" 15 con.instanceFollowRedirects = false 16 con.setRequestProperty("Accept-Language", "jp") 17 try { 18 con.connect() 19 val inst = con.inputStream 20 val bitmap = BitmapFactory.decodeStream(inst) 21 image = bitmap 22 inst.close() 23 } catch (e: IOException) { 24 Log.e("IOException", e.toString()) 25 } 26 con.disconnect() 27 return image 28 } 29 30 override fun onPostExecute(result: Bitmap?) { 31 val imageview = findViewById<ImageView>(R.id.ivDownload) 32 imageview.setImageBitmap(result) 33 } 34 35
追記 試してみてわかったこと
調べていて、画像のサイズが大きすぎるとSkImageDecoder::Factory returned nullと出てしまうという情報を見かけたので、ダウンロードする画像のURLを変えてみました。
上記のURLでやってみると、画像がImageViewにセットされました。
やはり画像サイズが大きすぎたのが問題なのでしょうか。
ダウンロードした時に、表示できるくらいに小さくすることはできるのでしょうか。
よろしければご教示くださるとうれしいです。
回答1件
あなたの回答
tips
プレビュー