2012-06-29 2 views
0

Я хочу изменить размер изображения на SD-карте и отправить его на веб-службу, вызов асинхронный и ParcelFileDescriptor и CountingInputStreamEntity использовать для отображения индикатора выполнения. Что мне делать, чтобы изменить размер и отправить таким же образом! Это мой текущий код:Изменение размера изображения с камеры в 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); 

Thanks in Advance.

ответ

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, а затем передать этот образ на веб-сервиса по вашему стилю.

Я надеюсь, что это помогает ..