我需要在动态壁纸中叠加两个图像。叠加图像是需要设置为“加法”叠加的 jpg。它添加像素值而不是计算透明度。我怎样才能在android中实现这一点?
问问题
742 次
2 回答
2
您可以使用与Canvas混合的 Android 的Bitmap和Drawable类,并尝试以下代码段中的内容:
public static Drawable mergeImage(Drawable orig, Drawable over, int left, int top) {
Bitmap original = ((BitmapDrawable)orig).getBitmap();
Bitmap overlay = ((BitmapDrawable)over).getBitmap();
Bitmap result = Bitmap.createBitmap(original.getWidth(), original.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(result);
Paint paint = new Paint();
paint.setAntiAlias(true);
canvas.drawBitmap(original, 0, 0, paint);
canvas.drawBitmap(overlay, left, top, paint);
return new BitmapDrawable(result);
}
我已经使用上面的行编写了一个覆盖有“在线状态”的照片图像网格视图。希望它也对你有用。
于 2012-06-17T11:11:54.050 回答
0
一种更通用的方法可能是使用您想要的PorterDuffMode创建一个PorterDuffXfermode,然后将其设置在您与画布一起使用的Paint对象上,如mthama 的答案中所引用但替换一些行。这使您可以根据需要使用其他 Porter-Duff 模式。
Paint paint = new Paint();
paint.setAntiAlias(true);
canvas.drawBitmap(original, 0, 0, paint);
paint.setXferMode(new PorterDuffXferMode(PorterDuff.Mode.OVERLAY));
canvas.drawBitmap(overlay, left, top, paint);
请注意,我还没有尝试过,所以请使用 mthama 的回答。:)
于 2012-06-17T13:10:23.813 回答