我需要将两张图片合二为一。基本上我需要做的就是将其中一个叠加在图像中心的另一个上面。这需要适用于所有主要的Android设备。
我尝试了很多东西,但这是我现在的代码片段(是的,我知道它搞砸了,我们需要弄清楚delx和dely):
/* Rotate our original photo */
// final float scale = getResources().getDisplayMetrics().density;
canvas.drawBitmap(bmp, 0f, 0f, null);
final float overlay_scale_factor = .5f;
final int overlaywidth = (int)(overlay.getWidth() * overlay_scale_factor);
final int overlayheight = (int)(overlay.getHeight() * overlay_scale_factor);
final int delx = overlaywidth;
final int dely = overlayheight;
Matrix mat = new Matrix();
mat.postRotate(270);
mat.postScale(overlay_scale_factor, overlay_scale_factor);
//mat.postTranslate(-delx, -dely);
canvas.drawBitmap(overlay, mat, null);
/* Bottom image 'composite' is now a composite of the two. */
感谢任何帮助。我知道这只是数学,但我并不擅长这种东西。
第一张图片'bmp'是画布大小的100%。 第二个图像“叠加”是在旋转270度后需要居中的叠加。
答案 0 :(得分:4)
完全未经测试,但我希望这样的事情可以发挥作用:
// Set the origin (0,0) in the middle of the view
canvas.translate(width/2, height/2);
// Draw the first bitmap so it is centered at (0,0)
canvas.drawBitmap(bmp, -bmp.getWidth()/2, -bmp.getHeight()/2, null);
// Rotate & scale
canvas.save();
canvas.rotate(270);
canvas.scale(.5f);
// Draw the overlay
canvas.drawBitmap(overlay, -overlay.getWidth()/2, -overlay.getHeight()/2, null);
canvas.restore();