25

ギャラリーから画像を選択したときに、アプリケーションで画像をトリミングしたいと考えています。つまり、ギャラリーを起動して画像を選択すると、iPhone から画像を選択したときのようにトリミング ウィンドウが表示されます。Androidで可能ですか?

Androidで画像をトリミングするためのチュートリアルを1つ見つけましたが、私が望んでいたようには見えません。

http://www.coderzheaven.com/2011/03/15/crop-an-image-in-android/

4

6 に答える 6

27

はい、を使用してアンドロイドで画像をトリミングすることは可能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で画像をトリミングするのにも役立つこの投稿を参照してください

于 2012-05-27T19:03:59.053 に答える
21

このチュートリアルはまさにあなたが楽しむ必要があるものです:

ギャラリーから画像を選択:

ここに画像の説明を入力

インテント ピック アクションの後に画像をトリミングする

ここに画像の説明を入力

乾杯

于 2012-05-27T19:35:12.517 に答える
15

は内部 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これを忘れないでください!! :)

于 2012-05-27T20:12:55.870 に答える