我想创建一个保存在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()
;