javafx качество загруженных изображений - PullRequest
0 голосов
/ 19 ноября 2018

мое приложение подключается к базе данных в mysql с помощью phpmyadmin и сохраняет изображение в базе данных, но моя проблема заключается в том, что когда я загружаю изображение из базы данных и публикую изображение в виде изображения, изображение имеет очень низкое качество, где оно такжецвет также влияет.

, если я отправляю изображение непосредственно в базу данных с помощью 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();
    }

}

1 Ответ

0 голосов
/ 19 ноября 2018

Я нашел ответ на вопрос благодаря этому этому вопросу .

Что я сделал, так это изменил с 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;
}

И, наконец, он загружает и загружает изображения с таким же качеством

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...