как я могу исправить выброшенное изображение, изменить его положение над растровым изображением и сохранить растровое изображение - PullRequest
1 голос
/ 11 июля 2019

Я занимаюсь разработкой приложения для Android, перетаскивая стикер и меняя размер стикера после захвата изображения.У меня есть проблема с изменением положения стикера после сохранения изображения. После сохранения он сдвигается почти на 20 dp вниз.

Я использую https://github.com/siralam/CameraViewPlus для камеры2.и 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);


            }
        });

У меня проблема с изменением положения стикера при сохранении изображения.изображение будет отображаться вне границ, когда тип масштаба изображения будет центральным кадром.вырубка угловой части.

Первое изображение перед сохранением.Второе изображение после сохранения.

Image Before save

Image After save

1 Ответ

0 голосов
/ 12 июля 2019

Я выясняю ответ.Проблема в том, что размер растрового изображения меньше размера стикера.так что возможно, когда я накладываю наклейку на растровое изображение, положение должно начинаться с позиции X, то есть с позиции 0, вид стикера полностью соответствует родительскому элементу, а фон прозрачен, он накладывается на растровое изображение.

Размер представления стикера равен 1080x 2061 и размер растрового изображения 1080 x 1920. возможно, после сохранения результат может измениться.

Проблема решена.

...