我很抱歉我的英语,英语不是我的母语。 我的问题是图像大小不正确。 例如,我有win“Penguins.jpg”的标准形象,大小为760kB。 但Java读取大约2.6 mB。 我的代码:
public class Main {
public static void HEX (byte b) {
switch (b) {
case 0x00: System.out.print("0"); break;
case 0x01: System.out.print("1"); break;
case 0x02: System.out.print("2"); break;
case 0x03: System.out.print("3"); break;
case 0x04: System.out.print("4"); break;
case 0x05: System.out.print("5"); break;
case 0x06: System.out.print("6"); break;
case 0x07: System.out.print("7"); break;
case 0x08: System.out.print("8"); break;
case 0x09: System.out.print("9"); break;
case 0x0A: System.out.print("A"); break;
case 0x0B: System.out.print("B"); break;
case 0x0C: System.out.print("C"); break;
case 0x0D: System.out.print("D"); break;
case 0x0E: System.out.print("E"); break;
case 0x0F: System.out.print("F"); break;
}
}
public static void main(String[] args) throws IOException {
File file = new File ("C:\\Java\\Penguins.jpg");
File MyFile = new File ("C:\\Java\\MyPic.jpg");
OutputStream outputStream = new BufferedOutputStream (new FileOutputStream (MyFile));
BufferedImage image = ImageIO.read(file);
WritableRaster raster = image.getRaster();
DataBufferByte data = (DataBufferByte) raster.getDataBuffer();
byte [] arr = data.getData();
System.out.println(arr.length);
outputStream.write(arr);
}
}
答案 0 :(得分:0)
这是检查文件大小而不是仅获取字节数组的正确方法。
File file = new File ("C:\\Java\\Penguins.jpg");
double bytes = file.length();
double kilobytes = (bytes / 1024);
答案 1 :(得分:-1)
问题可能是您正在将文件作为原始字节读取,而不是像ASCII这样的格式。看看这是否有帮助。