Android Javaにて、下記のページを参考に、デジカメで撮影した写真(5MB程度)を拡大・縮小して閲覧できるActivityを作成しようとしております。
【Android】画像の拡大縮小、移動、切り替えまでできるViewを作る(https://qiita.com/Cyber_Hacnosuke/items/b2a8724218d2f4a4c3c2)
PHPで85%に圧縮したJPEGを取得し、内部キャッシュフォルダに保存したものを上のページを参考に作成したActivityに読み込ませてみましたが、画像を拡大・縮小や移動をする度に5秒くらい待たされます。
I/Choreographer: Skipped 140 frames! The application may be doing too much work on its main thread.
とログには出ております。
PHPで極端に1%に圧縮したJPEGを使用してみましたが、かなり解像度や色が荒くなったにも関わらず、同じ結果でした。
画像サイズは5184×3888ピクセルですが、画像の容量というよりも縦横サイズが大きいことが原因なのでしょうか。
それともBitmapとしてメモリに読み込ませていることが原因なのでしょうか。
そもそも画像ファイルを保存しているにも関わらず、Bitmapとしてメモリに読み込ませておかないと表示できないのでしょうか。
いろいろ検索しているとCanvasよりもOpenGL ESというものを使用した方が軽いという検証結果を見つけましたが、5MBの画像を1枚表示させる程度でCanvasは限界なのでしょうか。
IntentでAndroidにデフォルトで入っている画像ビューアに飛ばしてみましたが、こちらは拡大・縮小などの動きはリアルタイムに処理され、快適に動作しました。
しかし写真は内部領域に保存させたいためIntentで飛ばす方法は避けなければならず、写真を拡大して細部の確認ができるようにしたいため画像品質を落とすわけにもいかない状態です。
何か対応策がお分かりでしたらご教授いただければ幸いです。
あなたの回答
tips
プレビュー