我正在尝试基于字符串创建图像,并在新行上指定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);
}
}
}
答案 0 :(得分:1)
每次循环时(对于R,G和B中的每一个),您都会更新y坐标,并在时间的2 / 3rds上绘制一个黑色像素(您的else
块码)。
如果我正确理解您的问题陈述,该文件如下:
200
100
0
其中200
是R值,100
是B值,0
是每个像素的G值。
如果是这种情况,您需要仅从文件读取的每三个值更新Y值 - 而不是根本不绘制黑色像素。