android中的图像裁剪

时间:2012-02-28 09:22:59

标签: android uiimageview crop

我通过传递customerid作为参数来调用web服务。 webservice返回我将在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 个答案:

答案 0 :(得分:1)

我认为这种方法可以帮助你

它调整位图大小。

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

答案 1 :(得分:1)

尝试:

    .....  
    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的大小