ギャラリーから画像を選択したときに、アプリケーションで画像をトリミングしたいと考えています。つまり、ギャラリーを起動して画像を選択すると、iPhone から画像を選択したときのようにトリミング ウィンドウが表示されます。Androidで可能ですか?
Androidで画像をトリミングするためのチュートリアルを1つ見つけましたが、私が望んでいたようには見えません。
http://www.coderzheaven.com/2011/03/15/crop-an-image-in-android/
ギャラリーから画像を選択したときに、アプリケーションで画像をトリミングしたいと考えています。つまり、ギャラリーを起動して画像を選択すると、iPhone から画像を選択したときのようにトリミング ウィンドウが表示されます。Androidで可能ですか?
Androidで画像をトリミングするためのチュートリアルを1つ見つけましたが、私が望んでいたようには見えません。
http://www.coderzheaven.com/2011/03/15/crop-an-image-in-android/
はい、を使用してアンドロイドで画像をトリミングすることは可能com.android.camera.action.CROP
です。gallery.you から画像の URL を選択した後、Crop Editor を次のように起動します。
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setClassName("com.android.camera", "com.android.camera.CropImage");
File file = new File(filePath);
Uri uri = Uri.fromFile(file);
intent.setData(uri);
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("outputX", 96);
intent.putExtra("outputY", 96);
intent.putExtra("noFaceDetection", true);
intent.putExtra("return-data", true);
startActivityForResult(intent, REQUEST_CROP_ICON);
画像を選択すると、Activity return が選択され、contents.in が保存されますonActivityResult
。
Bundle extras = data.getExtras();
if(extras != null ) {
Bitmap photo = extras.getParcelable("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.JPEG, 75, stream);
// The stream to write to a file or directly using the photo
}
Androidで画像をトリミングするのにも役立つこの投稿を参照してください
は内部 API の一部ですが、com.android.camera.action.CROP
ほとんどの Android デバイスで十分にサポートされているようです。これはあなたを始めるかもしれません:
final Intent intent = new Intent("com.android.camera.action.CROP");
intent.setData(uriOfImageToCrop);
intent.putExtra("outputX", 400);
intent.putExtra("outputY", 400);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
intent.putExtra("noFaceDetection", true);
intent.putExtra("output", Uri.fromFile(someOutputFile));
startActivityForResult(intent, SOME_RANDOM_REQUEST_CODE);
onActivityResult()
次に、 のメソッドで必要なことを処理しますActivity
。出力ファイルはトリミングされた画像である必要があります。
ただし、このIntent
アクションは内部 API の一部であるため、一部のデバイスがIntent
. 一部のメーカーは独自のギャラリー アプリを提供しているため、ユーザーのデバイスが を認識するかどうかを知る方法はありませんIntent
。これを忘れないでください!! :)