在iPad上打开在Android中创建的PNG图像?

时间:2013-07-12 13:34:09

标签: android ios objective-c png uiimagepngrepresentation

我正在编写一个应用程序,可以让您绘制签名,将其转换为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在使用之前需要以某种方式解压缩或解码图像吗?

0 个答案:

没有答案