2013-11-19 10 views
0

Как сжать изображение в приложении Android.Как сжать изображение в android

Мое приложение выбирает фотографию из галереи с использованием намерения и устанавливает фотографию в качестве фона для макета. Это отлично работает, когда я выбираю фотографию небольшого пикселя, бит-фотографию, снятую с камеры, она не подходит к экрану.

как сжать фотографию или изображение.

+0

Возможный дубликат [Android. Масштабируйте изображение, сохраняя его соотношение сторон в фоновом режиме) (http://stackoverflow.com/questions/9891065/android-scale-image-keeping-its-aspect-ratio-in-background-drawable) – CSmith

+0

Возможно, вы ищете http: //stackoverflow.com/questions/2521959/how-to-scale-an-image-in-imageview-to-keep-the-aspect-ratio – CodeWarrior

ответ

0

Для измерения ширины и высоты вашего ImageView во время выполнения

ViewTreeObserver vto = mUserPicImageView.getViewTreeObserver(); 
    vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { 
     public boolean onPreDraw() { 

      if (mImageHeight == 0) { 
       mImageHeight = mUserPicImageView.getMeasuredHeight(); 
       mImageWidth = mUserPicImageView.getMeasuredWidth(); 
       Log.e("mImageHeight", mImageHeight + ""); 

      } 
      return true; 
     } 
    }); 

Создать изображение указанной выше ширины и высоты

Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap,mImageHeight,mImageWidth, true); 

Установите изображение в ImageView

mUserPicImageView.setImageBitmap(scaledBitmap); 
1

Используйте следующее намерение, чтобы получить изображение требуемого размера из галереи.

  Intent photoPickerIntent = new Intent(
         Intent.ACTION_PICK, 
         android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
       // photoPickerIntent.setType("image/*"); 
       photoPickerIntent.putExtra("crop", "true"); 
       photoPickerIntent.putExtra("outputX", 512); 
       photoPickerIntent.putExtra("outputY", 512); 
       photoPickerIntent.putExtra("aspectX", 1); 
       photoPickerIntent.putExtra("aspectY", 1); 
       photoPickerIntent.putExtra("scale", true); 
       File f = new File(android.os.Environment 
         .getExternalStorageDirectory(), "tt.jpg"); 
       // imgpath=f.getAbsolutePath(); 
       System.err.println("Path$$$$$$$$$ " + f.getAbsolutePath()); 
       photoPickerIntent.putExtra(MediaStore.EXTRA_OUTPUT, 
         Uri.fromFile(f)); 
       photoPickerIntent.putExtra("outputFormat", 
         Bitmap.CompressFormat.PNG.toString()); 
       startActivityForResult(photoPickerIntent, SELECT_FILE); 
Смежные вопросы