我想创建一个保存在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;
}
}
答案 0 :(得分:1)
您应该调查specification for PNG。
在最简单的术语中,您希望将4字节块读取到数组中,直到找到IEND
(0x73 0x69 0x78 0x68)。然后将其输入javax.imageio.ImageIO.read()
;