2013-03-05 36 views
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; 
    } 

回答

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); 

希望这将有助于。

+0

什么我在文件路径wirte? File file = new File(Environment.getExternalStorageDirectory(),selectedImagePath); – 2013-03-05 10:06:19

+0

我不给文件路径我想解码所选图像 – 2013-03-05 10:06:43

+0

我有这个代码 final String imageFilePath = cursor.getString(0); \t \t文件照片=新文件(imageFilePath); \t \t yourSelectedImage = decodeFile(photos);我怎么给decodeFile函数捕获图像路径? – 2013-03-05 10:09:46