保存图像时将其保存为黑色透明而不是真实图像

当保存图像时,它会变成黑色方块而不是选择的图像,我希望能够从我的计算机中保存图像并将其保存在项目的文件夹中,以便在压缩和发送时他们可以查看我上传的图像。


我试过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");

    }

}


慕勒3428872
浏览 92回答 1
1回答

胡子哥哥

不需要逐个像素地工作,这会很慢。private void imageToArray(){&nbsp; &nbsp; int width = originalBI.getWidth();&nbsp; &nbsp; int height = originalBI.getHeight();&nbsp; &nbsp; newBI = new BufferedImage(width,height,BufferedImage.TYPE_INT_ARGB);&nbsp; &nbsp; Graphics2D g = newBI.createGraphics();&nbsp; &nbsp; g.drawImage(originalBI, 0, 0, width, height, null);&nbsp; &nbsp; g.dispose();}可以创建一个图形来绘制。有多种方法,例如在图像的一部分透明时使用背景颜色。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java