相关疑难解决方法(0)

程序不访问扩展JPanel类的方法paintComponent()

这是 JFrame

package client.connection;

import java.awt.Dimension;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import javax.swing.JFrame;


class DrawFrameRemoteControl extends JFrame
{
    private DrawPanelRemoteControl imagePanel;
    private ClientRemoteControlConnection clientRemoteControlConnection;
    private ObjectInputStream clientInputStream;
    private ObjectOutputStream clientOutputStream;
    private Dimension imageDimension;
    private Dimension serverDimension;

    public DrawFrameRemoteControl(Dimension imageDimension,ClientRemoteControlConnection clientRemoteControlConnection,ObjectInputStream clientInputStream,ObjectOutputStream clientOutputStream,Dimension serverDimension)
    {
        super("Remote Desktop Control");

        this.clientRemoteControlConnection=clientRemoteControlConnection;
        this.clientInputStream=clientInputStream;
        this.clientOutputStream=clientOutputStream;
        this.imageDimension=imageDimension;
        this.serverDimension=serverDimension;

        imagePanel=new DrawPanelRemoteControl(imageDimension);
        add(imagePanel);


        setSize(imageDimension.width,imageDimension.height);
        setResizable(false);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
        setLocationRelativeTo(null);
    }

    void drawNewImageGrayscale(byte[] array)
    {
        imagePanel.setNewImageGrayscale(array);
        imagePanel.repaint();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是扩展的JPanel类 -

package client.connection;

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit; …
Run Code Online (Sandbox Code Playgroud)

java swing jpanel jframe repaint

5
推荐指数
1
解决办法
1972
查看次数

用java在灰度图像中写入像素数据

我正在开发一个关于图像处理的项目,我必须在其中填充破裂绘画的数字化图像。我必须将彩色图像转换为灰度,对灰度图像的二维数组执行一些计算并将其写回灰度图像。代码如下:

BufferedImage colorImage=ImageIO.read(new File(strImagePath));

            BufferedImage image = new BufferedImage(colorImage.getWidth(),colorImage.getHeight(),BufferedImage.TYPE_BYTE_GRAY);
            Graphics g = image.getGraphics();
            g.drawImage(colorImage, 0, 0, null);
            g.dispose();

            ImageIO.write(image,"PNG",new File("Image.PNG"));

            BufferedImage imgOriginal=ImageIO.read(new File("Image.PNG"));

            int width=image.getWidth();
            int height=image.getHeight();

            BufferedImage im=new BufferedImage(width,height,BufferedImage.TYPE_BYTE_GRAY);

            int arrOriginal[][]=new int[height][width];


            for(int i=0;i<height;i++)
                for(int j=0;j<width;j++)
                    arrOriginal[i][j]=imgOriginal.getRGB(j,i)& 0xFF;

            for(int i=0;i<height;i++)
                for(int j=0;j<width;j++)
                    im.setRGB(j,i,arrOriginal[i][j]);

            ImageIO.write(im,"PNG",new File("Image1.PNG"));
Run Code Online (Sandbox Code Playgroud)

但是输出图像非常暗,我没有取回原始图像(我还没有做任何更改)。

我认为 setRGB() 语句应该有一些变化,但我不知道是什么。

为了回写图像,我也尝试过:

`

BufferedImage im = new BufferedImage(width,height,BufferedImage.TYPE_BYTE_GRAY);
 WritableRaster raster = im.getRaster();
 for(int i=0;i<height;i++)
     for(int j=0;j<width;j++)
         raster.setSample(j,i,0,arrOriginal[i][j]); 
Run Code Online (Sandbox Code Playgroud)

`

但它也不会给我原始图像。

谁能给我提供这个问题的解决方案?提前致谢。

java image image-processing

0
推荐指数
1
解决办法
3642
查看次数

标签 统计

java ×2

image ×1

image-processing ×1

jframe ×1

jpanel ×1

repaint ×1

swing ×1