我有两个目标,我想要实现 .
-
按比例缩放位图 .
-
缩放相同的位图,使其高度等于设备的高度 .
尝试此操作时,我发现在像素较少的设备上,缩放工作正常,但在具有更多像素的设备上,缩放会强制位图达到 4096x4096 像素限制:
W/OpenGLRenderer(10630): Bitmap too large to be uploaded into a texture (4476x885, max=4096x4096)
截至目前,我使用Bitmap.createBitmap(位图源,int x,int y,int width,int height)来缩放我的位图:
float conversion = (float) view.getHeight() / (float) originalBitmap.getHeight();
Matrix mat = new Matrix();
mat.postScale(conversion,conversion);
Bitmap resizedBitmap =
Bitmap.createBitmap(originalBitmap,0,0,originalBitmap.getWidth(),
originalBitmap.getHeight(), mat, false);
imageView.setImageBitmap(resize);
上面的代码与以下xml相结合,允许位图缩放整个屏幕:
<ImageView
android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:scaleType="matrix"/>
如果有任何其他比例方法将位图缩放到整个屏幕,我将非常感谢这些建议 .
1 回答
使用
Bitmap.createScaledBitmap(Bitmap src, int dstWidth, int dstHeight, boolean filter);
,其中dstWidth和dstHeight分别是所需的宽度和高度 . (过滤器只是尝试平滑边缘,如果它是真的,如果它是假的则不会,如图所示here . )这不需要Matrix参数或所需的位置,它只返回缩放的位图 .以下可能适合您:
您现在可能只需要这么多的XML:
那是因为你不需要占据整个父母的东西,而你不再使用矩阵来扩展 .