0

我正在编写一个应用程序,可让您绘制签名,将其转换为 PNG 并以 Base64 格式将其上传到服务器。

此图像应该可以使用 iPad 和 Android 平板电脑下载。

Android 平板电脑可以从其他平板电脑和其他 iPad 下载和显示图像,但由于某种原因,iPad 在尝试将原始图像数据转换为可用的图像格式时会卡住?

在 iPad 上抛出的异常是:

imageio: png incorrect header check
No IDATs written into file

创建PNG图像并将其转换为Base64的Android代码如下:

    public static String getBase64ImageFromImageView(ImageView imageView) {
    Bitmap bitmap = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
    byte[] bitmapByteArray = baos.toByteArray();
    return Base64.encodeToString(bitmapByteArray, Base64.NO_WRAP);
}

抛出错误的Objective-C代码是:

 NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(signatureImage)];

其中 signatureImage 是包含 Base64 解码图像数据的 UIImage。

我们已经通过解码并将其保存为图像文件来验证 Base64-ed 图像是正确的(可以正常工作)

这是导致问题的“UIImagePNGRepresentation”调用,但我不知道为什么!

任何想法,所以大师?

编辑 刚刚想到这一点,当我想在 android 上使用签名文件时,我调用以下命令:

    byte[] bytes = Base64.decode(base64, Base64.DEFAULT);
    imageView.setImageBitmap(BitmapFactory.decodeByteArray(bytes, 0, bytes.length));

会不会是 iPad 在使用之前需要以某种方式解压缩或解码图像?

4

0 回答 0