Неудачная обрезка изображения в Android

поэтому я хочу выбрать изображение из галереи, а затем обрезать его:

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

ОК, выберите фотографию, а затем поймайте ее на ActivityResult, а затем обрежьте ее:

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


person user724861    schedule 23.04.2012    source источник


Ответы (2)


Проверьте этот код по следующей ссылке.

Обрезать изображение

Он отлично работает для меня..

person deepa    schedule 23.04.2012

Я не знаю, как вы научились использовать эту технику для обрезки изображения. Но я всегда использую эту библиотеку. И это никогда не переставало меня впечатлять. Работайте с 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);
    }
}
person ariefbayu    schedule 23.04.2012
comment
Здравствуйте, ariefbayu, я не понимаю, как использовать этот библиотечный проект. Не могли бы вы сообщить мне код кода активности запуска. заранее спасибо - person Ayush Verma; 27.06.2012