我需要让用户在屏幕上移动图像并调整其大小。
那部分我已经完成了。
我无法弄清楚的部分是如何在拍照时冻结照片图像上的可移动/可调整大小的图像,而不是将两者合并在一起以制作 1 个位图。
我真的没有任何“代码片段”要发布。我只是希望有些人以前可能有过这方面的经验,并且可能会有所了解。
编辑。我知道当我拍照时,图像已经冻结在屏幕上。在那种情况下,我捕获了画布上的项目位置。我需要做的是拿走我已经画了一些东西的画布,并以某种方式将其覆盖到另一个我也分配了照片的画布上。
编辑#2
好的女士们先生们。我想到了。这是为相机制作叠加层的代码(如 mmeyer 所述。)
Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
public void onPictureTaken(byte[] imageData, Camera c) {
Context ct = new Context;
RelativeLayout relativeview = new RelativeLayout(ct);
if (imageData != null) {
Context ct = HagsCamera.this;
new Intent(ct, PreviewandSend.class);
Bitmap photo = BitmapFactory.decodeByteArray(imageData, 0, imageData.length);
int picwidth= (photo.getWidth()/2);
int picheight = (photo.getHeight()/2);
Bitmap photocopy = Bitmap.createScaledBitmap(photo, picwidth, picheight, false);
Canvas c2 = crv.canvastoreturn;
c2.setBitmap(photocopy);
//photo.recycle();
ImageView newImage = new ImageView(ct);
relativeview.addView(newImage);
relativeview.draw(c2);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
photo.getWidth()/2, photo.getHeight()/2);
relativeview.setLayoutParams(lp);
祝大家好运。我希望这有助于避免很多头痛。
简而言之:为您的图片制作一张位图。
为您的叠加层制作一个画布并将您的东西扔到那里
获取您的叠加层画布的副本
.setBitmap() 该画布并将其设置为您的照片位图。
制作一个 RelativeLayout 并向其中添加一个新的 ImageView。
在 ImageView 上绘制画布。
然后找出RelativeLayout 的布局参数。
现在我想了想,也许您可以将顶层画布设置为您的照片位图……然后保存它……您可以自己测试。