android - 如何缩放android中已经存在的位图?

标签 android

我有一个已经解码的位图,我想在将它绘制到 Canvas 上之前临时缩放它。因此,解码文件并设置大小之前是不可能的。我想保持现有位图的大小,并在将其绘制到 Canvas 上之前将其缩放为更小。这可能吗?

使用 Matrix postScale(sx, sy, px, py) 可以正确缩放它但不能正确定位。从我所见,canvas.drawBitmap 没有矩阵和 x 和 y 位置的选项。

有什么建议吗?

最佳答案

代码如下:

public static Bitmap scaleBitmap(Bitmap bitmap, int width, int height) {
    final int bitmapWidth = bitmap.getWidth();
    final int bitmapHeight = bitmap.getHeight();

    final float scale = Math.min((float) width / (float) bitmapWidth,
            (float) height / (float) bitmapHeight);

    final int scaledWidth = (int) (bitmapWidth * scale);
    final int scaledHeight = (int) (bitmapHeight * scale);

    final Bitmap decoded = Bitmap.createScaledBitmap(bitmap, scaledWidth, scaledHeight, true);
    final Canvas canvas = new Canvas(decoded);

    return decoded;
}

请注意:传递位图进行缩放,它是新的高度和宽度。

关于android - 如何缩放android中已经存在的位图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11011180/

相关文章:

android - 我应该如何组织 Android 项目(包括库)的源代码管理?

android - 在 Fragment 中使用 volley 从 JSON 中获取数据

android - QuickBlox - 来自不同位置/设备的相同用户登录

Android WebView 不显示图像 Instagram 嵌入

android - 在 Google Tango 上使用 OpenGL ES 3.1

android - Room flowable调用多次

android - 带改造的@POST数组

android - 意外删除后如何恢复预建文件?

安卓 4.0.3。 USB 主机 - 与相机通信

android - 如何修复 gradle 任务 ':app:mergeDebugJniLibFolders' in flutter gradle build for opencv native with NDK?