我想创建一个保存在PNG图像内的自定义文件图像格式。我一直在研究如何可能,但我不知道从哪里开始。我想用这种方式定义自定义文件格式:
-第一个字节包含格式版本
-接下来的2个字节包含该文件包含的文件数
-其余文件内容是一个接一个地复制的png文件

我可以使用流来读取文件,但是我不知道如何将每个png转换为BufferedImage,因为ImageIO可以读取完整的流。
这就是我随附的所有内容:

public static void main(String[] args) throws IOException {
    DataInputStream input = new DataInputStream(new FileInputStream("C:\\a.spr"));
    byte version = input.readByte();
    short imagenum = input.readShort();
    System.out.printf("version:%s\nimagenum:%s",version,imagenum);
    BufferedImage[] images = new BufferedImage[imagenum];
    for(int i=0;i<imagenum;i++)
    {
         BufferedImage img; //TODO: Read the image
         images[i] = img;
    }
}

最佳答案

您应该调查specification for PNG

用最简单的术语来说,您想将4个字节的块读入数组,直到找到IEND(0x73 0x69 0x78 0x68)。然后将其输入javax.imageio.ImageIO.read();

10-06 15:00