2012-06-29 46 views
0

我想調整SD卡上的圖像大小並將其發送到Web服務,調用是異步的,並且ParcelFileDescriptorCountingInputStreamEntity用於顯示進度條。我應該怎麼做才能調整大小並以相同的方式發送!這是我目前的代碼:調整Android中相機的圖像大小

ParcelFileDescriptor fileDescriptor = context.getContentResolver().openFileDescriptor(uri, "r"); 
InputStream in = context.getContentResolver().openInputStream(uri); 
CountingInputStreamEntity entity = new CountingInputStreamEntity(in, fileDescriptor.getStatSize()); 
entity.setUploadListener(this); 
entity.setContentType("application/octet-stream"); 
put.setEntity(entity); 

在此先感謝。

回答

2

圖像可以通過使用BitmapFactory.Options

重新調整大小你需要像下面創建圖像的新的小的寬度和高度:

private Bitmap decodeFile(File f){ 
    Bitmap b = null; 
    try { 
     //Decode image size 
     BitmapFactory.Options o = new BitmapFactory.Options(); 
     o.inJustDecodeBounds = true; 

     FileInputStream fis = new FileInputStream(f); 
     BitmapFactory.decodeStream(fis, null, o); 
     fis.close(); 

     int scale = 1; 
     if (o.outHeight > IMAGE_MAX_SIZE || o.outWidth > IMAGE_MAX_SIZE) { 
      scale = (int)Math.pow(2, (int) Math.round(Math.log(IMAGE_MAX_SIZE/(double) Math.max(o.outHeight, o.outWidth))/Math.log(0.5))); 
     } 

     //Decode with inSampleSize 
     BitmapFactory.Options o2 = new BitmapFactory.Options(); 
     o2.inSampleSize = scale; 
     fis = new FileInputStream(f); 
     b = BitmapFactory.decodeStream(fis, null, o2); 
     fis.close(); 
    } catch (IOException e) { 
    } 
    return b; 
} 
+0

這工作完全謝謝你 – madprops

0

要調整相機圖像的大小,您可以使用onActivitResult()中的以下代碼。

    BitmapFactory.Options options = new BitmapFactory.Options(); 
       options.inSampleSize = 8; 

       Bitmap receipt = BitmapFactory.decodeFile(photo.toString(),options); 

在其中您可以使用options.inSampleSize調整圖像大小,然後通過你的風格,形象傳遞給Web服務。

我希望它有助於..