Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用JPanel显示彩色图像?_Java_Image Processing - Fatal编程技术网

Java 如何使用JPanel显示彩色图像?

Java 如何使用JPanel显示彩色图像?,java,image-processing,Java,Image Processing,我有一个存储在3D阵列中的彩色图像,现在我想在JPanel上显示此数据或图像。我的代码读取功能如下: public void readImage(String filename) throws Exception { String filenameExtension = filename.substring(filename.lastIndexOf('.')+1); File fileImage = FileChosen; Iterator imageReaders =

我有一个存储在3D阵列中的彩色图像,现在我想在
JPanel
上显示此数据或图像。我的代码读取功能如下:

public void readImage(String filename) throws Exception {
    String filenameExtension = filename.substring(filename.lastIndexOf('.')+1);
    File fileImage = FileChosen;
    Iterator imageReaders = ImageIO.getImageReadersBySuffix(filenameExtension);

    ImageReader imageReader;

    if(imageReaders.hasNext())
        imageReader = (ImageReader)imageReaders.next();
    else
        throw new IOException("Unsupported image format");

    FileImageInputStream imageInputStream = new FileImageInputStream(fileImage);

    imageReader.setInput(imageInputStream);

    ImgWidth = imageReader.getWidth(0);
    ImgHeight = imageReader.getHeight(0);

    BufferedImage bufImage = imageReader.read(0);
    imageInputStream.close();

    WritableRaster wRaster = bufImage.getRaster();

    //int numBands = wRaster.getNumBands();
            System.out.println(ImgWidth);
            System.out.println(ImgHeight);


    imageArray = (new double[ImgHeight][ImgWidth][ColourLevels]);

    // get the samples and normalize to between 0 and 1
    for(int row = 0; row < ImgHeight; row++)
        for(int col = 0; col < ImgWidth; col++)
            for(int level = 0; level < ColourLevels; level++)
                imageArray[row][col][level] = (wRaster.getSample((col), (row), level) / 255.0);

} // end read method`
public void readImage(字符串文件名)引发异常{
字符串filenameExtension=filename.substring(filename.lastIndexOf('.')+1);
File fileImage=fileselected;
迭代器imageReaders=ImageIO.getImageReadersBySuffix(文件名扩展名);
图像阅读器;
if(imageReaders.hasNext())
imageReader=(imageReader)imageReaders.next();
其他的
抛出新IOException(“不支持的图像格式”);
FileImageInputStream imageInputStream=新的FileImageInputStream(fileImage);
设置输入(imageInputStream);
ImgWidth=imageReader.getWidth(0);
ImgHeight=imageReader.getHeight(0);
BuffereImage bufImage=imageReader.read(0);
imageInputStream.close();
WritableRaster wRaster=bufImage.getRaster();
//int numBands=wRaster.getNumBands();
System.out.println(ImgWidth);
系统输出打印项次(ImgHeight);
imageArray=(新的双色[ImgHeight][ImgWidth][colorLevels]);
//获取样本并将其规格化为0到1之间
对于(int行=0;行

现在,我想将存储在
imageArray[][][]
中的数据打印到面板中,我如何才能做到这一点?

1)创建一个新图像并将其显示在
JLabel
中。2)
IOException(“不支持的图像格式”)对我来说,它似乎不是一个
IOException
。也许,
IllegalArgumentException
更合适。如果可能的话,你能给我看看你的作品吗。谢谢。“给我看看工作情况”1)要更快地获得更好的帮助,请发布一条。2) 例如,获取图像的一种方法是热链接到中看到的图像。