0

我正在制作一个应用程序,将一些过滤器应用于java上加载的图像..

我被困在创建兼容缓冲图像、获取 graphics2d 对象并渲染我的新图像的位置。

这是我创建 BufferedImage 兼容的代码。

pbi=obi.getSubimage(0, 0, obi.getWidth(),obi.getHeight());
            int altoImagen=pbi.getHeight();
            int anchoImagen=pbi.getWidth();
            pbi=new BufferedImage(anchoImagen,altoImagen,BufferedImage.TYPE_INT_RGB);
            g2=pbi.createGraphics();

之后,我使用原始图像在obi OriginalBufferedImage上应用过滤器..

float ninth=1.0f/9.0f;
        float[]blurKernel={
            ninth,ninth,ninth,
            ninth,ninth,ninth,
            ninth,ninth,ninth
        };
        ConvolveOp op=new ConvolveOp(new Kernel(3,3,blurKernel));
        obi=op.filter(obi,null);    
        lienzo.repaint();
        g2.drawImage(obi, null,null);

问题,我可以弄清楚是什么..是新图像没有渲染..

我认为这发生在我这样做的时候g2=pbi.createGraphics..但是在许多教程中必须完成这一步..

有人可以准确地解释我的渲染是如何工作的吗?

我没有使用组件,而是使用 Graphics2d.drawImage() 将图像(和图形)渲染到 JPanel 中。

4

0 回答 0