Java 如何使用JPanel显示彩色图像?
我有一个存储在3D阵列中的彩色图像,现在我想在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 =
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) 例如,获取图像的一种方法是热链接到中看到的图像。