javafx上传图片的质量

hpxqektj  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(380)

我的应用程序使用phpmyadmin连接到mysql中的数据库,并在数据库中存储图像,但我的问题是,当我从数据库下载图像并将图像发布到imageview上时,图像的质量非常低,颜色也受到影响。
如果我用phpmyadmin直接在数据库上发布图像,然后用我的应用程序下载图像,图像看起来很好,但是如果我从我的应用程序上传图像,然后下载,那么图像质量很差。
发布图像的方法是将图像传递到字节[],然后上载到使用blob类型的数据库。

private byte[] imagenToByte(Image imagen) {
    BufferedImage bufferimage = SwingFXUtils.fromFXImage(imagen, null);
      ByteArrayOutputStream output = new ByteArrayOutputStream();
      try {
        ImageIO.write(bufferimage, "jpg", output );
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
      byte [] data = output.toByteArray();
      return data;
}

你能帮帮我吗?
编辑

@FXML
public void eventoBotonSeleccionarImagen() {
    FileChooser imagenSeleccionada = new FileChooser();
    FileChooser.ExtensionFilter filtroImagenjpg = new ExtensionFilter("Archivos *.jpg", "*.jpg");
    FileChooser.ExtensionFilter filtroImagenJPG = new ExtensionFilter("Archivos *.JPG", "*.JPG");

    File archivo = imagenSeleccionada.showOpenDialog(null);

    try {
        BufferedImage bufferedImage = ImageIO.read(archivo);
        Image image = SwingFXUtils.toFXImage(bufferedImage, null);
        imageViewMonstruo.setImage(image);
    }
    catch(Exception e) {
        e.printStackTrace();
    }

}
vh0rcniy

vh0rcniy1#

由于这个问题,我找到了问题的答案。
我所做的是在数据库中从blob更改为longblob,并添加png而不是jpg,代码结果如下

private byte[] imagenToByte(Image imagen) {
    BufferedImage bufferimage = SwingFXUtils.fromFXImage(imagen, null);
      ByteArrayOutputStream output = new ByteArrayOutputStream();
      try {
        ImageIO.write(bufferimage, "png", output );
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
      byte [] data = output.toByteArray();
      return data;
}

最后上传下载相同质量的图片

相关问题