Java中图像的大小不正确?

时间:2018-06-18 15:50:17

标签: java image size

我很抱歉我的英语,英语不是我的母语。 我的问题是图像大小不正确。 例如,我有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);
}

}

2 个答案:

答案 0 :(得分:0)

这是检查文件大小而不是仅获取字节数组的正确方法。

File file = new File ("C:\\Java\\Penguins.jpg");
double bytes = file.length();
double kilobytes = (bytes / 1024);

答案 1 :(得分:-1)

问题可能是您正在将文件作为原始字节读取,而不是像ASCII这样的格式。看看这是否有帮助。