我正在开发 android 应用程序拖放贴纸并在捕获图像后调整贴纸大小。我的问题是保存图像后贴纸位置发生变化。保存后它向下移动了近 20 dp。
我已经将https://github.com/siralam/CameraViewPlus用于 camera2。和https://github.com/wuapnjie/StickerView用于贴纸。
这是我的功能在它上面绘制贴纸并保存。
downloadButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final ICallback callback = new ICallback() {
@Override
public void done(Exception e) {
if (e == null) {
DebugLog.e("onImageSavedCallback: image saved!");
//showCustomDialog(layoutView);
// closeButton.performClick();
showCustomDialog();
cameraView.start();
} else {
DebugLog.e("onImageSavedCallback: error saving image: " + e.getMessage());
showSnackBar("Error saving image", Snackbar.LENGTH_SHORT);
}
}
};
stickerView.setLocked(true);
stickerView.invalidate();
Bitmap newBitmap = null;
Bitmap bitmap = CommonMethods.getBitmapFromView(stickerView);
try {
Bitmap.Config config = imageBitmap.getConfig();
if (config == null) {
config = Bitmap.Config.ARGB_8888;
}
newBitmap = Bitmap.createBitmap(imageBitmap.getWidth(), imageBitmap.getHeight(), config);
Canvas canvas = new Canvas(newBitmap);
// Paint paint = new Paint(Paint.FILTER_BITMAP_FLAG);
canvas.drawBitmap(imageBitmap, 0, 0, null);
canvas.drawBitmap(bitmap, 0, 0, null);
} catch (Exception ex) {
ex.printStackTrace();
}
int t = 1;
ImageSaver imageSaver = new ImageSaver(
newBitmap,
getExternalFilesDir(null),
callback,
t
);
mBackgroundHandler.post(imageSaver);
}
});
保存图像后,我遇到了贴纸更改 itz 位置的问题。当图像比例类型为中心裁剪时,图像将显示越界。角落部分切割下来。
第一张图片是在保存之前。第二张图片是保存后。