обрезка изображения в Android - PullRequest
       16

обрезка изображения в Android

2 голосов
/ 28 февраля 2012

Я вызываю веб-сервис, передавая параметр customerid в качестве параметра. Веб-сервис возвращает мне биты изображений, которые я буду использовать в приложении для Android. Теперь проблема в том, что я не могу использовать изображение, так как оно исходит от веб-сервера, потому что оно слишком большое. Мне нужно обрезать это. Если у кого-то есть фрагмент кода, который может помочь, я действительно был бы благодарен. Любой альтернативный подход также приветствуется.

try
{
byte[] imageis = getImage();

Bitmap bmp=BitmapFactory.decodeByteArray(imageis,0,imageis.length);
if (bmp!=null)
{
ImageView imgview= (ImageView)findViewById(R.id.vimg);
imgview.setImageBitmap(bmp);
}
}

Метод getImage () хорош и работает. Так что не беспокойтесь об этом. У любого есть идея, что мне нужно сделать после этого?

Ответы [ 2 ]

1 голос
/ 28 февраля 2012

Попробуйте:

    .....  
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeByteArray(imageByte, 0, imageByte.length, options);
    int width_tmp = options.outWidth, height_tmp = options.outHeight;
    int scale = 1;
    while (true) {
        if (width_tmp / 2 < width || height_tmp / 2 < height)
            break;
        width_tmp /= 2;
        height_tmp /= 2;
        scale *= 2;
    }
    options = new BitmapFactory.Options();
    options.inSampleSize = scale;
    options.inPurgeable = true;
    options.inInputShareable = true;

    Bitmap result = BitmapFactory.decodeByteArray(imageByte, 0, imageByte.length, options);
    ....   

где ширина и высота - размер вашего ImageView

1 голос
/ 28 февраля 2012

Я думаю, что этот метод может помочь вам

Он изменяет размер растрового изображения.

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;
}
...