1

私のアプリはカメラを使用して写真を撮り、データを別の場所に送信します。ただし、画像サイズがバイト単位で大きすぎるか、または不必要に大きくなります。しかし、カメラに小さな写真を強制的に撮影させる方法や、写真を撮った後に縮小版を送信する方法がわかりません。

これがカメラ画面への行き方です。

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(getTempFile()));

startActivityForResult(intent, PIC_ONE);//first picture

そして、私が持っている onActivityResult:

...
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize=4;
Bitmap mBitmap = BitmapFactory.decodeFile(getPath(myURI),options);

photoView.setImageBitmap(bmp);

これは、保存された画像の 4 分の 1 サイズのサムネイルをユーザーに表示します。もちろん、実際の画像はまだ大きなサイズのままです。

画像サイズを小さくするにはどうすればよいですか?

4

1 に答える 1

1

Have a look at Reduce Bitmap size using BitmapFactory.Options.inSampleSize


You can also try createScaledBitmap()

public static Bitmap createScaledBitmap (Bitmap src, int dstWidth, int dstHeight, boolean filter) 

Since: API Level 1 Creates a new bitmap, scaled from an existing bitmap.

Parameters src The source bitmap. dstWidth The new bitmap's desired width. dstHeight The new bitmap's desired height. filter true if the source should be filtered.

Returns the new scaled bitmap.

It also reduces the file size,

You can also use Following function for resizing:

 public Bitmap getResizedBitmap(Bitmap bm, int newHeight, int newWidth) {

    int width = bm.getWidth();

    int height = bm.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(bm, 0, 0, width, height, matrix, false);

    return resizedBitmap;

    }
于 2012-06-03T16:55:05.930 に答える