2016-02-17 24 views
0

我有這樣的問題:我準備在JAVA程序中應該保存圖片的一些數據並將它們保存到txt文件中。然後,程序應該將每個第25行的圖像變成黑色的所有像素,並在顯示器上實現圖像(已經用黑線顯示)。但有些事情是錯誤的,我沒有任何線索 - 整張照片從diplay中刪除,沒有顯示任何內容。代碼如下:更改像素後的JAVA中的圖像實現

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; 
    } 
} 

我正在使用NetBeans,儘管如此,一切正常。

+0

對不起。我現在已經指出了這個問題 - 請參閱這篇文章。 – vonski

+2

您正在創建一個與'in'大小相同的新的空BufferedImage'out',但絕不會將in中的數據複製到out。所以你在空白的圖像上畫一條黑線,然後顯示結果 - 然後將是空的。確保你首先複製'in'圖像。 –

+0

什麼(類型)是'imagePanel'? – haraldK

回答

2

您創建一個空的圖像,並開始在每個第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); 
      } 
     } 
+0

我已經這樣做了,但ImageIo被視爲符號 - 不知道爲什麼。而且,緩衝圖像不被視爲「功能」(未突出顯示)。我錯過了什麼? 'BufferedImage out = ImageIo.read(new File(file.getAbsolutePath()));對於(int j = 0; j vonski

+0

它是ImageIO而不是ImageIo我犯了一個錯字我會糾正它這個庫在jdk中包名是javax.imageio這個庫在1.4以後在jdk中 – achabahe

1

只需在致電imagePanel.setIcon(img);後添加imagePanel.revalidate();。您必須告訴Java必須評估您的更改並在必要時重新繪製組件。

+0

沒有什麼改變 - 雖然程序正在通過這條線,但顯示仍然是灰色的。 – vonski

-1

achabaheErwin Bolwidt是正確的 - 缺少圖片。 我已經在這種非常簡單的方法解決它:

BufferdImage out = in; 

我還沒有刷新記憶,所以我可以再次使用它。也許不是最好的解決方案,但工作。

+0

那麼,爲什麼不把它們的答案標記爲Answer ? – vacip