Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:从下到上裁剪图像_Java_Android_Bitmap - Fatal编程技术网

Java Android:从下到上裁剪图像

Java Android:从下到上裁剪图像,java,android,bitmap,Java,Android,Bitmap,我有一个图像,我正试图将图像的裁剪版本覆盖在原始图像上。大概是这样的: 原创的 叠加图像 覆盖图像裁剪到大约50%后的图像 现在,我下面的代码与我想要的相反,并返回如下图像: 我知道我可以反转图像文件,但我想从原始图像开始,让覆盖层向上绘制,而不是从覆盖层开始,然后向下绘制原始图像。感谢您的帮助 您可以使用以下方法: Canvas.drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint) 以下是我的overlay方法,可以满足

我有一个图像,我正试图将图像的裁剪版本覆盖在原始图像上。大概是这样的:

原创的

叠加图像

覆盖图像裁剪到大约50%后的图像

现在,我下面的代码与我想要的相反,并返回如下图像:


我知道我可以反转图像文件,但我想从原始图像开始,让覆盖层向上绘制,而不是从覆盖层开始,然后向下绘制原始图像。感谢您的帮助

您可以使用以下方法:

Canvas.drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint)
以下是我的
overlay
方法,可以满足您的需要:

public static Bitmap overlay(Bitmap base, Bitmap overlay, Float percentage) {
    Bitmap resultBitmap = Bitmap.createBitmap(base.getWidth(), base.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(resultBitmap);

    Paint paint = new Paint();

    // base bitmap
    canvas.drawBitmap(base, 0F, 0F, paint);

    // overlay bitmap
    int yOffset = (int) (percentage * base.getHeight());
    Rect rect = new Rect(0, yOffset, overlay.getWidth(), overlay.getHeight());
    canvas.drawBitmap(overlay, rect, rect, paint);
    return resultBitmap;
}
public static Bitmap overlay(Bitmap base, Bitmap overlay, Float percentage) {
    Bitmap resultBitmap = Bitmap.createBitmap(base.getWidth(), base.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(resultBitmap);

    Paint paint = new Paint();

    // base bitmap
    canvas.drawBitmap(base, 0F, 0F, paint);

    // overlay bitmap
    int yOffset = (int) (percentage * base.getHeight());
    Rect rect = new Rect(0, yOffset, overlay.getWidth(), overlay.getHeight());
    canvas.drawBitmap(overlay, rect, rect, paint);
    return resultBitmap;
}