Base64签名捕获为Codenameone App中的黑色方框

时间:2018-04-26 22:54:30

标签: base64 codenameone

我在移动应用程序中使用签名捕获,大部分时间它都正常工作。我有应用程序的离线功能,因此当应用程序处于离线模式时,会捕获签名,并且在发送到服务器时,图像将变为黑色方块。这是由于移动级别的任何数据损坏或使用该问题时的任何问题签名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 :(得分:0)

确保将图像文件保存为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,因为它是不透明的白色图像。黑色签名将正确显示在其上。