像素改变后的JAVA图像实现
我有这样的问题:我用JAVA编写了一个程序,该程序将图片中的一些数据保存到txt文件中。然后,程序应该将每25行中图片的所有像素变为黑色,并在显示器上实现图片(已经有黑线)。但有点不对劲,我不知道是什么-整个图片从diplay中删除,没有显示任何内容。代码如下:像素改变后的JAVA图像实现,java,pixel,bufferedimage,Java,Pixel,Bufferedimage,我有这样的问题:我用JAVA编写了一个程序,该程序将图片中的一些数据保存到txt文件中。然后,程序应该将每25行中图片的所有像素变为黑色,并在显示器上实现图片(已经有黑线)。但有点不对劲,我不知道是什么-整个图片从diplay中删除,没有显示任何内容。代码如下: private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) .......... BufferedImage out
private void saveButtonActionPerformed(java.awt.event.ActionEvent evt)
..........
BufferedImage out = new BufferedImage(in.getWidth(), in.getHeight(), in.getType());
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j=j+25) {
out.setRGB(i,j,0);
}
}
ImageIcon img = new ImageIcon(out);
imagePanel.removeAll();
imagePanel.setIcon(img);
} catch (IOException e) {
System.out.print("ERROR");
}
}
}
public static BufferedImage loadImage(File file) {
try {
BufferedImage out = ImageIO.read(file);
return out;
} catch (IOException e) {
return null;
}
}
private void saveButtonActionPerformed(java.awt.event.ActionEvent evt)
..........
BuffereImage out=新的BuffereImage(in.getWidth()、in.getHeight()、in.getType());
对于(int i=0;i
我正在使用NetBeans,尽管如此,一切都很好。只需添加
imagePanel.revalidate()调用imagePanel.setIcon(img)后的code>代码>。您必须告诉Java,它必须评估您的更改,并在必要时重新绘制组件。只需添加imagePanel.revalidate()调用imagePanel.setIcon(img)后的code>代码>。您必须告诉Java,它必须评估您的更改,并在必要时重新绘制组件。您创建一个空图像,然后开始在每25行中绘制,事实上,您应该从原始图像开始,并开始在其中绘制
// you create an empty image with same width and height of the original
//BufferedImage out = new BufferedImage(in.getWidth(), in.getHeight(), in.getType());
BufferedImage out = ImageIO.read(new File("path/to/Original/image"));
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j=j+25) {
out.setRGB(i,j,0);
}
}
//创建一个与原始图像具有相同宽度和高度的空图像
//BuffereImage out=新的BuffereImage(in.getWidth()、in.getHeight()、in.getType());
BuffereImage out=ImageIO.read(新文件(“路径/到/原始/图像”);
对于(int i=0;i
创建一个空图像,然后在每25行开始绘制,实际上,您应该从原始图像开始,然后在其中开始绘制
// you create an empty image with same width and height of the original
//BufferedImage out = new BufferedImage(in.getWidth(), in.getHeight(), in.getType());
BufferedImage out = ImageIO.read(new File("path/to/Original/image"));
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j=j+25) {
out.setRGB(i,j,0);
}
}
//创建一个与原始图像具有相同宽度和高度的空图像
//BuffereImage out=新的BuffereImage(in.getWidth()、in.getHeight()、in.getType());
BuffereImage out=ImageIO.read(新文件(“路径/到/原始/图像”);
对于(int i=0;i
和右-缺少图像。
我用非常简单的方法解决了这个问题:
BufferdImage out = in;
我没有刷新内存,所以我可以再次使用它。也许不是最好的解决方案,但很管用。和是正确的-缺少图像。
我用非常简单的方法解决了这个问题:
BufferdImage out = in;
我没有刷新内存,所以我可以再次使用它。也许不是最好的解决方案,但很有效。对不起。我现在已经指定了问题所在-请参阅文章中的内容。您正在创建一个新的空缓冲区映像out
,其大小与in
相同,但从未将in
中的数据复制到out
。所以你在一张空图像上画一条黑线,然后显示结果——结果将是空的。请确保首先在
中复制图像。图像面板
是什么(类型)?对不起。我现在已经指定了问题所在-请参阅文章中的内容。您正在创建一个新的空缓冲区映像out
,其大小与in
相同,但从未将in
中的数据复制到out
。所以你在一张空图像上画一条黑线,然后显示结果——结果将是空的。确保先在
中复制图像。什么(类型)是imagePanel
?没有变化-尽管程序正在通过这一行,但显示仍然是灰色的。没有变化-尽管程序正在通过这一行,但显示仍然是灰色的。我已经这样做了,但ImageIo被视为符号-不知道为什么。此外,缓冲图像不被视为“功能”(未突出显示)。我错过了什么buffereImage out=ImageIo.read(新文件(File.getAbsolutePath());对于(inti=0;i
这是ImageIO不是ImageIO我有一个输入错误,我会更正它这个库在jdk中,包名是javax.ImageIO这个库在jdk中,因为1.4我这样做了,但ImageIO被视为符号-不知道为什么。此外,缓冲图像不被视为“功能”(未突出显示)。我错过了什么buffereImage out=ImageIo.read(新文件(File.getAbsolutePath());对于(inti=0;i
它是ImageIO不是ImageIO我有一个输入错误,我会更正它这个库在jdk中,包名是javax.ImageIO这个库从1.4开始就在jdk中