我通过传递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()方法很好并且正常工作。所以不用担心。在这之后我有什么想法吗?
答案 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的大小