0

我如何压缩图像所以保存大图像我找到了代码但我在 R.drawable.my 中写了什么?

我的代码在这一行中保存捕获图像

 //this line yourSelectedImage = (Bitmap) imageReturnedIntent.getExtras().get("data");

@Override
   protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
       super.onActivityResult(requestCode, resultCode, imageReturnedIntent);

            if (imageReturnedIntent.getExtras() != null) {
                // here is the image from camera



                yourSelectedImage = (Bitmap)  
   imageReturnedIntent.getExtras().get("data");



                ByteArrayOutputStream outStr = new  
    ByteArrayOutputStream();
                yourSelectedImage.compress(CompressFormat.JPEG, 100,  
   outStr);
                blob = outStr.toByteArray();
                imageView1.setImageBitmap(yourSelectedImage);

            }

我找到了这段代码我如何在我的代码中调用它?我的代码在这个解码代码之上

  image =decodeSampledBitmapFromResource(getResources(), R.drawable.my, 100, 100);



    image.compress(Bitmap.CompressFormat.JPEG, 100, stream);
     imageInByte = stream.toByteArray();

  public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId,
    int reqWidth, int reqHeight) {

 // First decode with inJustDecodeBounds=true to check dimensions
 final BitmapFactory.Options options = new BitmapFactory.Options();
 options.inJustDecodeBounds = true;
 BitmapFactory.decodeResource(res, resId, options);

 // Calculate inSampleSize
 options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);

// Decode bitmap with inSampleSize set
 options.inJustDecodeBounds = false;
 return BitmapFactory.decodeResource(res, resId, options);
  }

   public static int calculateInSampleSize(
    BitmapFactory.Options options, int reqWidth, int reqHeight) {
    // Raw height and width of image
  final int height = options.outHeight;
  final int width = options.outWidth;
 int inSampleSize = 1;

  if (height > reqHeight || width > reqWidth) {

// Calculate ratios of height and width to requested height and width
final int heightRatio = Math.round((float) height / (float) reqHeight);
final int widthRatio = Math.round((float) width / (float) reqWidth);

// Choose the smallest ratio as inSampleSize value, this will guarantee
// a final image with both dimensions larger than or equal to the
// requested height and width.
inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio;
    }

  return inSampleSize;
  }
4

1 回答 1

0

你可以使用下面的代码来压缩你的位图并保存它

Bitmap photo = (Bitmap) extras.get("data"); //here you will get your Bitmap
selectedImagePath = String.valueOf(System.currentTimeMillis())+ ".jpg"; //make random name for your compressed image
Log.i("TAG", "New selectedImagePath before file "+ selectedImagePath);
File file = new File(Environment.getExternalStorageDirectory(), selectedImagePath);
try {
    file.createNewFile();
    FileOutputStream fos = new FileOutputStream(file);
    photo.compress(Bitmap.CompressFormat.PNG, 100, fos);
    } catch (IOException e) {
    // TODO Auto-generated catch block
    Toast.makeText(this,"Sorry, Camera Crashed-Please Report as Crash A.",3).show();
   }

  selectedImagePath = Environment.getExternalStorageDirectory() + "/" + selectedImagePath;
  Log.i("TAG", "After File Created  " + selectedImagePath);
  Bitmap bm = decodeFile(selectedImagePath);
  mImageView.setImageBitmap(bm);

希望它会有所帮助。

于 2013-03-05T10:00:31.277 回答