2012-12-26 109 views
1

我需要拍照並編輯它。 我使用原點相機並返回大尺寸圖像,所以當我嘗試創建新模板圖像進行編輯時,應用程序將變得更近,因爲outOfMemoryError。 有沒有什麼辦法幫助我在將圖像加載到我的應用程序之前調整圖像大小?在相機拍照並編輯它

我的代碼將影像:

void loadImageFromCamera(){ 
    Intent takePicture = new Intent("android.media.action.IMAGE_CAPTURE"); 
    File photo = null; 
    try{ 
     // place where to store camera taken picture 
     photo = this.createTemporaryFile("picture", ".jpg"); 
     photo.delete(); 
    } catch(Exception e){ 

    } 
    mImageUri = Uri.fromFile(photo); 
    takePicture.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri); 
    startActivityForResult(takePicture, 0); 
} 
private File createTemporaryFile(String part, String ext) throws Exception{ 
    File tempDir = Environment.getExternalStorageDirectory(); 
    tempDir = new File(tempDir.getAbsolutePath() + "/.temp/"); 
    if(!tempDir.exists()){ 
     tempDir.mkdir(); 
    } 
    return File.createTempFile(part, ext, tempDir); 
} 
public void grabImage(){ 
    this.getContentResolver().notifyChange(mImageUri, null); 
    ContentResolver cr = this.getContentResolver(); 
    try { 
     originImage = android.provider.MediaStore.Images.Media.getBitmap(cr, mImageUri); 
    }catch (Exception e){ 

    } 

} 

回答

1

是的,你可以調整圖像 使用下面的方法來調整圖像大小

public static Bitmap getResizedBitmap(Bitmap image, int newHeight, int newWidth) { 
    int width = image.getWidth(); 
    int height = image.getHeight(); 
    float scaleWidth = ((float) newWidth)/width; 
    float scaleHeight = ((float) newHeight)/height; 
    // create a matrix for the manipulation 
    Matrix matrix = new Matrix(); 
    // resize the bit map 
    matrix.postScale(scaleWidth, scaleHeight); 
    // recreate the new Bitmap 
    Bitmap resizedBitmap = Bitmap.createBitmap(image, 0, 0, width, height, 
      matrix, false); 
    return resizedBitmap; 
} 
+0

當加載不能調整圖像,因爲OutOfMemoryError異常。 \ n我嘗試添加你的代碼,但它不工作:|。我需要在加載到我的應用程序之前調整大小。 – Sunary

+0

是的,這會在應用程序加載後調整圖像大小 –

+0

感謝bro,但我需要它在加載之前調整大小。反正它有負載前調整圖像大小嗎? – Sunary