При сохранении изображения он сохраняет его как черный прозрачный вместо реального изображения - PullRequest
0 голосов
/ 04 февраля 2019

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

Я пробовал BufferedImage.TYPE_INT_ARGB, но не знаю, в этом ли проблема.

private void imageToArray(){
    int width = originalBI.getWidth();
    int height = originalBI.getHeight();

    newBI = new BufferedImage(width,height,BufferedImage.TYPE_INT_ARGB);

    pixels = new int[width][height];

    for(int i = 0; i<width;i++){
        for(int j = 0;j<height;j++){
            pixels[i][j]=originalBI.getRGB(i,j);
        }
    }
}

private void saveImage(){
    int returnValue = saveFileChooser.showSaveDialog(this);

    if(returnValue == JFileChooser.APPROVE_OPTION) {
        try{
            ImageIO.write(newBI, "png",saveFileChooser.getSelectedFile());
            lblMessage.setText("Image File Succesfully saved");

        }catch(IOException ex){
            lblMessage.setText("Failed to save image file");
        }
    }
    else{
        lblMessage.setText("No file Choosen");
    }
}

1 Ответ

0 голосов
/ 04 февраля 2019

Не нужно работать попиксельно, что было бы медленно.

private void imageToArray(){
    int width = originalBI.getWidth();
    int height = originalBI.getHeight();

    newBI = new BufferedImage(width,height,BufferedImage.TYPE_INT_ARGB);
    Graphics2D g = newBI.createGraphics();
    g.drawImage(originalBI, 0, 0, width, height, null);
    g.dispose();

}

Можно создать графику для рисования.

Существуют различные методы, например, использованиеЦвет фона должен быть частью изображения прозрачным.

...