0

SD カードの画像のサイズを変更して Web サービスに送信したいのですが、呼び出しは非同期で、ParcelFileDescriptorプログレスCountingInputStreamEntityバーを表示するために使用します。同じようにリサイズして送信するにはどうすればいいですか?これは私の現在のコードです:

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);

前もって感謝します。

4

2 に答える 2

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;
}
于 2012-06-29T08:31:25.177 に答える
0

カメラ画像のサイズを変更するには、 で次のコードを使用できますonActivitResult()

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

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

を使用して画像のサイズを変更し、options.inSampleSizeその画像をスタイルで Web サービスに渡すことができます。

私はそれが役立つことを願っています..

于 2012-06-29T08:29:35.513 に答える