Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Compress Image in android

I am making an application which takes image from the camera and then email it.

Friends since you know that images from camera may be of too much resolution and in size as well e.g. 2.0MB and more so what i want is to re-size the image in size as well as in resolution so that i could attach that file to the email.

So can anybody give me some code sample or some guidelines to get over my problem.

Thanks in advance

like image 707
Shah Avatar asked Jun 24 '11 06:06

Shah


People also ask

How do I compress file size on Android?

Using an online PDF compressor. Open your browser and navigate to the Acrobat online PDF compressor. Tap on Select a File and locate your PDF on your Android device. Download your compressed PDF. You can also see how much the tool reduced the file size.


2 Answers

you can do this to compress BitMap..

mBitmap = Bitmap.createScaledBitmap(mBitmap, 160, 160, true);
like image 86
Sujit Avatar answered Oct 03 '22 23:10

Sujit


try this example

public class bitmaptest extends Activity {
@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    LinearLayout linLayout = new LinearLayout(this);

    // load the origial BitMap (500 x 500 px)
    Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(), 
           R.drawable.android);

    int width = bitmapOrg.width();
    int height = bitmapOrg.height();
    int newWidth = 200;
    int newHeight = 200;

    // calculate the scale - in this case = 0.4f
    float scaleWidth = ((float) newWidth) / width;
    float scaleHeight = ((float) newHeight) / height;

    // createa matrix for the manipulation
    Matrix matrix = new Matrix();
    // resize the bit map
    matrix.postScale(scaleWidth, scaleHeight);
    // rotate the Bitmap
    matrix.postRotate(45);

    // recreate the new Bitmap
    Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0, 
                      width, height, matrix, true); 

    // make a Drawable from Bitmap to allow to set the BitMap 
    // to the ImageView, ImageButton or what ever
    BitmapDrawable bmd = new BitmapDrawable(resizedBitmap);

    ImageView imageView = new ImageView(this);

    // set the Drawable on the ImageView
    imageView.setImageDrawable(bmd);

    // center the Image
    imageView.setScaleType(ScaleType.CENTER);

    // add ImageView to the Layout
    linLayout.addView(imageView, 
        new LinearLayout.LayoutParams(
                  LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT
            )
    );

    // set LinearLayout as ContentView
    setContentView(linLayout);
}
}

you can try this also

Bitmap.createScaledBitmap(yourimage, 160, 160, true);
like image 39
kannappan Avatar answered Oct 04 '22 00:10

kannappan