我正在制作一个应用程序,将一些过滤器应用于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 中。