изменение разрешения файла изображения в Android - PullRequest
0 голосов
/ 09 сентября 2011

Я сохраняю захваченное изображение в SDCard, используя следующий код

class SavePhotoTask extends AsyncTask<byte[], String, String> {
@Override
protected String doInBackground(byte[]... jpeg) {
File photo=new File(Environment.getExternalStorageDirectory(),"photo.jpg");
if (photo.exists()) {
photo.delete();
}

try {
FileOutputStream fos=new FileOutputStream(photo.getPath());     
fos.write(jpeg[0]);
fos.close();
}
catch (java.io.IOException e) {
Log.e("PictureDemo", "Exception in photoCallback", e);
}
return(null);
}
}

, но получаю изображение с разрешением 1024 * 768, как я могу изменить разрешение этого изображения.

я звоню в SavePhotoTask вот так

Camera.PictureCallback photoCallback=new Camera.PictureCallback(){
public void onPictureTaken(byte[] data, Camera camera){

bmp = BitmapFactory.decodeByteArray(data, 0, data.length);
Bitmap mutableBitmap = bmp.copy(Bitmap.Config.ARGB_8888, true);

Canvas canvas = new Canvas(mutableBitmap);
canvas.drawBitmap(itembmp,left,right,null);
image.setImageBitmap(mutableBitmap);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
mutableBitmap.compress(Bitmap.CompressFormat.PNG,100, stream);
byte[] byteArray = stream.toByteArray();
new SavePhotoTask().execute(byteArray);
Toast.makeText(PreviewDemo1.this,"Image Saved",Toast.LENGTH_LONG).show();
camera.startPreview();
inPreview=true;
}
};

заранее спасибо

Ответы [ 2 ]

0 голосов
/ 09 сентября 2011

Если вы можете разобрать его в BitMap, вы можете использовать это:

private final int MAX_WIDTH = 400;
private final int MAX_HEIGHT = 400;
public Bitmap getResizedBitmap(Bitmap bm) {
        int width = bm.getWidth();
        int height = bm.getHeight();
        float scaleWidth;
        float scaleHeight;
        if (width < MAX_WIDTH && height < MAX_HEIGHT) {
            return bm;
        }
        if (width > height) {
            scaleWidth = ((float) MAX_WIDTH) / width;
            scaleHeight = ((float) MAX_HEIGHT * height / width) / height;

        } else {
            scaleWidth = ((float) MAX_WIDTH * width / height) / width;
            scaleHeight = ((float) MAX_HEIGHT) / height;
        }
        Matrix matrix = new Matrix();
        matrix.postScale(scaleWidth, scaleHeight);
        Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height,
                matrix, false);

        return resizedBitmap;

    }
0 голосов
/ 09 сентября 2011

Это jpeg, переданный методу doInBackground, который уже имеет это разрешение - вам нужно изменить все, что вызывает этот код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...