在Gluon Mobile中将图像转换为字节数组(PictureService)

时间:2017-11-02 15:17:34

标签: gluon gluon-mobile

我试图在Gluon Mobile中使用PictureService来获取可以存储在MySQL表(Blob)中的个人资料图片。从服务的返回图像对象获取字节数组(以及可能的base64编码字符串)的最佳方法是什么?我尝试了SwingFXUtils,但它导致应用程序在我的Android上崩溃。因此,我不确定是否支持SwingFXUtils。

    Services.get(PicturesService.class).ifPresent(service -> {
            service.takePhoto(false).ifPresent(image -> {
                try {
                    byte[] imageStream = PictureFactory.convertToByteArray(image);
                    //String base64String = Base64.getEncoder().encodeToString(imageStream);
                    //this.picModel.setByteArray(imageStream);
                    //this.picModel.setBase64Str(base64String);
                    //this.picModel.setPatientId(User.patient.getPatientId());

                    av.setImage(image); //Avatar
                    av.setRotate(-90);

                    if (this.imageBox.getChildren().size() < 3) {
                        this.imageBox.getChildren().add(0, av);
                    }


                } catch (Exception ex) {
                    Logger.getLogger(PictureFactory.class.getName()).log(Level.SEVERE, null, ex);
                }
            });
        });

字节数组转换代码:

public static byte[] convertToByteArray(Image img) throws IOException {
    BufferedImage byteImg = SwingFXUtils.fromFXImage(img, null);
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    ImageIO.write(byteImg, "png", stream);
    byte[] result = stream.toByteArray();
    stream.close();
    return result;
}

我也遇到的一个完全不相关的问题是,当以纵向模式拍摄时,图像顺时针旋转90度。有任何解决这个问题的方法吗?我希望它可以在图像本身中修复,然后发送到数据库而不是旋转图像视图。

0 个答案:

没有答案