我有一个已经解码的位图,我想在画布上绘制之前临时缩放它。因此,解码文件并设置之前的大小是不可能的。我想保持现有位图的大小,并在将其绘制到画布上之前将其缩小。这可能吗?
使用 Matrix postScale(sx, sy, px, py) 可以正确缩放它,但不能正确定位它。而且 canvas.drawBitmap 没有矩阵和 x & y 位置的选项,从我所见。
有什么建议么?
我有一个已经解码的位图,我想在画布上绘制之前临时缩放它。因此,解码文件并设置之前的大小是不可能的。我想保持现有位图的大小,并在将其绘制到画布上之前将其缩小。这可能吗?
使用 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;
}
请注意:将位图传递给缩放,它是新的高度和宽度。