Java 图像像素数据读取和打印
呜呜。我有一个很棒的代码,它将图像中所有像素的数据输出到一个csv/txt文件中。现在它没有显示文件中的任何内容。文件完全是空白的。我错过了什么Java 图像像素数据读取和打印,java,csv,pixel,filewriter,printwriter,Java,Csv,Pixel,Filewriter,Printwriter,呜呜。我有一个很棒的代码,它将图像中所有像素的数据输出到一个csv/txt文件中。现在它没有显示文件中的任何内容。文件完全是空白的。我错过了什么 import java.awt.Component; import java.awt.image.BufferedImage; import javax.imageio.ImageIO; import java.util.Scanner; import java.net.ServerSocket; import java.net.Socket; imp
import java.awt.Component;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.util.Scanner;
import java.net.ServerSocket;
import java.net.Socket;
import java.io.*;
public class JavaWalkBufferedImageTest1 extends Component {
public static void main(String[] foo) {
File outFile = new File ("finall.txt");
try{
FileWriter fWriter = new FileWriter (outFile, true);
PrintWriter pWriter = new PrintWriter (fWriter);
new JavaWalkBufferedImageTest1(pWriter);
pWriter.close();
} catch(Exception e){ }
}
public void printPixelARGB(int pixel, PrintWriter pW4) {
int red = (pixel >> 16) & 0xff;
int green = (pixel >> 8) & 0xff;
int blue = (pixel) & 0xff;
pW4.print(red + ", " + green + ", " + blue);
}
private void marchThroughImage(BufferedImage image, PrintWriter pW3) {
int w = image.getWidth();
int h = image.getHeight();
for (int i = h; i < h; i++) {
for (int j = w; j < w; j++) {
pW3.print( j + ", " + i + ", "); //X,Y
int pixel = image.getRGB(j, i);
printPixelARGB(pixel, pW3); //red,green,blue
pW3.println("");
}
}
}
public JavaWalkBufferedImageTest1(PrintWriter pW2) {
try {
BufferedImage image = ImageIO.read(this.getClass().getResource("color.jpg"));
marchThroughImage(image, pW2);
} catch (IOException e) {
System.err.println(e.getMessage());
}
}
}
导入java.awt.Component;
导入java.awt.image.buffereImage;
导入javax.imageio.imageio;
导入java.util.Scanner;
导入java.net.ServerSocket;
导入java.net.Socket;
导入java.io.*;
公共类JavaWalkBufferedImageTest1扩展组件{
公共静态void main(字符串[]foo){
File outFile=新文件(“finall.txt”);
试一试{
FileWriter fWriter=新的FileWriter(outFile,true);
PrintWriter pWriter=新的PrintWriter(fWriter);
新的JavaWalkBufferedImageTest1(pWriter);
pWriter.close();
}捕获(例外e){}
}
public void printPixelARGB(整数像素,PrintWriter pW4){
int red=(像素>>16)和0xff;
绿色整数=(像素>>8)&0xff;
蓝色整数=(像素)&0xff;
pW4.打印(红色+”、“+绿色+”、“+蓝色);
}
私有void marchThroughImage(BuffereImage图像,PrintWriter pW3){
int w=image.getWidth();
int h=image.getHeight();
for(int i=h;i
仔细查看marchThroughImage()中的for循环:)
从i等于h开始,当i>=h时,要求它停止。所以实际上没有迭代发生。j也是这样
从0开始,您应该会得到一些输出。我觉得很害羞/愚蠢。非常感谢。我知道这是一件我自己看不到的可笑的事情。哈哈,调试的东西总是这样。祝你好运