0

ギャラリーから画像を選択してトリミングしたい:

Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,
      "Select Picture"), PHOTO_PICKED_WITH_DATA);

OK、写真を選んで onActivityResult をキャッチし、トリミングします。

Intent intent = new Intent("com.android.camera.action.CROP");
    intent.setDataAndType(mAvatarUri, "image/*");
    intent.putExtra("crop", true);
    intent.putExtra("aspectX", 1);
    intent.putExtra("aspectY", 1);
    intent.putExtra("outputX", ICON_SIZE);
    intent.putExtra("outputY", ICON_SIZE);
    intent.putExtra("scale", true);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, mAvatarUri);
    intent.putExtra("return-data", true);
    startActivityForResult(intent, CROP_IMAGE);

今、問題は、それをバイトに変換してからxml内に送信したいときです...トリミングされた画像だけではなく、画像全体が取得されます...また、トリミングされた画像uriにアクセスできません。ファイルが見つかりませんと表示されます!うーん、トリミングした画像が保存されていなかったようです...

どうすればこれを修正できると思いますか?

サムスン エース 2.3.4

4

2 に答える 2

1

次のリンクでこのコードを確認してください。

クロップ画像

それは私にとってはうまくいきます。

于 2012-04-23T04:18:29.157 に答える
0

画像をトリミングするテクニックをどのようにして得たのかわかりません。しかし、私はいつもこのライブラリを使用しています。そして、それは私を感動させることに失敗したことはありません. Android 2.1 から 3.2 まで動作します (4.0 以降では決してテストしないでください)。

これが私がそれを行う方法です:

Intent cropIntent = new Intent(imageProcessActivity,
        CropImage.class);
cropIntent.putExtra("image-path",
        FileUtil.saveTempFile(ImageProcessActivity.processedBitmap, filename));
cropIntent.putExtra("scale", true);
imageProcessActivity.startActivityForResult(cropIntent, ImageProcessActivity.INTENT_CROP_CODE);

結果をキャッチする方法は次のとおりです。

if (requestCode == INTENT_CROP_CODE && resultCode == RESULT_OK) {
    Bundle extras = intent.getExtras();
    if (extras != null) {
        Uri uri = null;
        uri = (Uri) extras.get("imageCrop");
        Bitmap bitmap = null;
        try {
            bitmap = ImageUtil.decodeFile(
                    new File(new URI(uri.toString())),
                    AppConstant.MAX_IMAGE_SIZE);
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
        processedBitmap = bitmap;
        selectedImage.setImageBitmap(bitmap);
    }
}
于 2012-04-23T03:46:12.367 に答える