画像のトリミングを行いたいと思います。
結構探すと下記でトリミングができるのがわかります
Intent intent = new Intent("com.android.camera.action.CROP"); intent.setData(data.getData());// トリミングに渡す画像パス intent.putExtra("outputX", 300);// トリミング後の画像の幅 intent.putExtra("outputY", 300);// トリミング後の画像の高さ intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); intent.putExtra("scale", true);// トリミング中の枠を拡大縮小させるか intent.putExtra("return-data", true);// トリミングしたデータを返すよ startActivityForResult(intent, REQUEST_CROP_PICK);
で終えたいのですが、画像のサイズですが、300*300だと、基本的には画像の300*300の画像のデータを取得できます。トリミングも基本的にデフォルトのトリミングのアクティビティを利用してくれるのですが、画像サイズを大きくすると、おかしい事が起こります。(端末の依存があるとおもいますが:galaxy sです)実行しても動かない or 切り取っても動作が重いと言う現象が起こります。galaxy sだと400*400~発生しました。
一定以上の画像のデータの受け渡しはメモリの問題上できないように制限されているみたいです。
基本的には、そのような情報はどこにも書いてないのですが。。。
ですが、よくよく見てみてみると、画像のアプリはほとんどが、トリミングをアプリ内部で行なっています。インスタグラムや、LINEカメラなどでも。
上記の引数の指定方法はかなり簡単にできるので、使いたいのですが、画像サイズを一定以上大きくしたい場合に、トリミングを自分で実装しなくてはいけないのかもしれません。
次回以降、大きな方向性と、実際の実装をすすめてみたいと思います。