相机base64图像无法转换为位图

时间:2016-07-18 04:09:13

标签: android

我在转换后端发送给我的base64字符串图片时遇到了问题。

这就是后端发送数据的方式。

final ByteArrayOutputStream os = new ByteArrayOutputStream();
     try {
         ImageIO.write(img, formatName, Base64.getEncoder().wrap(os));
         return os.toString(StandardCharsets.ISO_8859_1.name());
     } catch (final IOException ioe) {
         throw new UncheckedIOException(ioe);
     }

这就是我们如何转换它。

final byte[] data = Base64.decode(base64, Base64.DEFAULT);

            return BitmapFactory.decodeByteArray(data, 0, data.length);

结果始终为null。任何帮助都非常感谢。

修改

这些是后端代码。

        @Override
        public BufferedImage base64ToImage(String base64Image) throws IOException {

            byte[] imageBytes = Base64.getDecoder().decode(base64Image);
            BufferedImage img = ImageIO.read(new ByteArrayInputStream(imageBytes));

            return img;
        }
        public static String imgToBase64String(final RenderedImage img, final String formatName) {
            final ByteArrayOutputStream os = new ByteArrayOutputStream();
            try {
                ImageIO.write(img, formatName, Base64.getEncoder().wrap(os));
                return os.toString();
            } catch (final IOException ioe) {
                throw new UncheckedIOException(ioe);
            }
        }

这是我们在将Base64图像字符串发送到后端之前的转换工具。

   ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);

        return Base64.encodeToString(baos.toByteArray(), Base64.NO_WRAP);

2 个答案:

答案 0 :(得分:0)

检查您的base64编码字符串是否不以data:image/jpg;base64,开头。如果是,则删除它。在这种情况下,Base64.decode将无法对其进行解码。你可以使用encodedString.substring(encodedString.indexOf(",") + 1);删除它。如果这解决了你的问题,请告诉我。

答案 1 :(得分:0)

试试这个,

        ImageView driverImage = (ImageView) driverReportView.findViewById(R.id.imgViewDriverImage);
        try {
            byte [] encodeByte = Base64.decode(driverImageString.replace("\'/", "/"), Base64.DEFAULT);
            Bitmap bitmap= BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length);
            if (bitmap != null)
                driverImage.setImageBitmap(bitmap);

        }catch (Exception ex){
            Log.e(TAG,"Error to display driver info "+ex.toString());
        }

<强>其中

driverImageString是您的图片字符串