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 で編集された画像をデコードして画像ファイルとして保存することで、その画像が正しいことを確認しました (正常に動作します)。

問題を引き起こしているのは「UIImagePNGRepresentation」呼び出しですが、その理由はわかりません!

アイデアはありますか?

編集 Androidで署名ファイルを使用したいときは、次のように呼び出します。

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

iPad は画像を使用する前に何らかの方法で画像を解凍またはデコードする必要があるのでしょうか?

4

0 に答える 0