来自字符串的缓冲图像

时间:2018-04-05 02:06:19

标签: java loops bufferedimage

我正在尝试基于字符串创建图像,并在新行上指定RGB颜色值。但无论出于何种原因,像素被放置在错误的位置,从而产生这种奇怪的V形图案。显然问题在于我如何增加价值,但我似乎无法找到问题。

我还确认了多种不同方式,字符串

没有任何问题

Chevron pattern I was talking about

  static void AddPixels(String Data){
      Scanner Scan = new Scanner(Data);

      ArrayList<Integer> Table = new ArrayList<>();

      while (Scan.hasNextLine() && !(XCount == XTotal)){
         Scanner LineScan = new Scanner(Scan.nextLine());
         while (LineScan.hasNext()){
            Table.add(LineScan.nextInt());
         }
         if (Table.size() == 3){
            Image.setRGB(XCount,YCount, new Color(Table.get(0),Table.get(1),Table.get(2),255).getRGB());
         }
         else{
            Image.setRGB(XCount,YCount, new Color(0,0,0,0).getRGB());
         }
         Table.clear();
         YCount++;
         if (YCount == YTotal){
            YCount = 0;
            XCount++;
            System.out.println(Math.floor(((double)XCount/XTotal)*100));
         }     
      }
      //System.out.println("Finished");
      if (XCount >= XTotal){
      System.out.println("Runnin");
         try{
            File ImageFile = new File("TestImage.png");
            ImageIO.write(Image, "png", ImageFile);
         }
         catch(IOException e)
         {
            System.out.println("Error: " + e);
         }
      }

}

1 个答案:

答案 0 :(得分:1)

每次循环时(对于R,G和B中的每一个),您都会更新y坐标,并在时间的2 / 3rds上绘制一个黑色像素(您的else块码)。

如果我正确理解您的问题陈述,该文件如下:

200
100
0

其中200是R值,100是B值,0是每个像素的G值。

如果是这种情况,您需要仅从文件读取的每三个值更新Y值 - 而不是根本不绘制黑色像素。