我正在为从远程服务器下载的文件设置ImageView
,然后保存到设备的本地存储中。由于某种原因,图像变得扭曲。根据我的研究,如果我设置了scaleType
的{{1}},adjustViewBounds
,maxWidth
和maxHeight
属性,那么Android会为我缩放图像。这看起来很奇怪,因为在我的另一个非Android开发中,我总是必须在显示之前先以编程方式调整图像大小。但是,this post表示Android会这样做。
这是我要显示的图片:Image
图片扭曲:
代码:
ImageView
答案 0 :(得分:0)
如果它对任何人都有帮助,我最终会使用以下代码调整图像大小:
final URLConnection ucon = new URL(url).openConnection();
final InputStream is = ucon.getInputStream();
final Bitmap b = BitmapFactory.decodeStream(is);
int origWidth = b.getWidth();
int origHeight = b.getHeight();
float scaleWidth = ((float) width) / origWidth;
float scaleHeight = ((float) width) / origHeight;
final Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap b2 = Bitmap.createBitmap(b, 0, 0, origWidth, origHeight, matrix, false);
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
b2.compress(Bitmap.CompressFormat.PNG, 100, outStream);
FileOutputStream fo = new FileOutputStream(file);
fo.write(outStream.toByteArray());
fo.flush();
fo.close();
outStream.flush();
outStream.close();
b.recycle();
b2.recycle();