Захват подписи Base64 в виде черного квадрата в приложении Codenameone - PullRequest
0 голосов
/ 27 апреля 2018

Я использую захват подписи в мобильном приложении, и в большинстве случаев он работает правильно. У меня есть автономная возможность для приложения, поэтому, когда приложение находится в автономном режиме, подпись захватывается и при отправке на сервер изображение становится черным квадратом. Это связано с повреждением данных на мобильном уровне или любой проблемой при использовании API подписи. Пожалуйста, сообщите.

Код:

Image sourceImage = sign.getSignatureImage().scaledSmallerRatio(300, 100);
Image mute = Image.createImage(sourceImage.getWidth(), sourceImage.getHeight(), 0xffffffff);
Graphics g = mute.getGraphics();
g.drawImage(sourceImage, 0, 0);
test.setSignature(mute);
Base64.encodeNoNewline(EncodedImage.createFromImage(test.getSignature(), 
false).getImageData())

Вопросы:

  1. Новый код также приводит к появлению пробелов в подписи. Подпись выглядит не слишком хорошо. Пожалуйста, сообщите.

  2. Какой код, если мне нужно отправить изображение в формате PNG на сервер. Я использую следующий код: Base64.encodeNoNewline (EncodedImage.createFromImage (act.getSignature (), ложь) .getImageData ())

1 Ответ

0 голосов
/ 27 апреля 2018

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

Чтобы сделать изображение "jpegable" (полностью выдуманным прямо сейчас), вы можете сделать следующее:

// white mutable image
Image mute = Image.create(sourceImage.getWidth(), sourceImage.getHeight, 0xffffffff);
Graphics g = mute.getGraphics();
g.setAntiAliased(true);
g.drawImage(sourceImage, 0, 0);

Теперь вы можете сохранить звук в формате JPEG, так как это непрозрачное белое изображение. Черная подпись будет правильно отображаться поверх этого.

...