2012-04-10 2 views
0

PNG 이미지를 포함하는 사용자 정의 파일 이미지 포맷을 만들고 싶습니다. 나는 내가 어떻게 그것을 할 수 있었는지 조사하고 있었지만, 나는 어디서부터 시작해야할지 모른다. 다음과 같이 사용자 정의 파일 형식을 정의합니다. - 첫 번째 바이트에 형식 버전이 포함되어 있습니다. - 다음 2 바이트에 파일이 들어있는 파일 수가 포함되어 있습니다. - 파일 내용의 나머지 부분은 차례로 복사되는 png 파일입니다.자바에서 사용자 정의 이미지 포맷 만들기

파일을 읽으려면 스트림을 사용할 수 있지만 ImageIO가 전체 스트림을 읽었 기 때문에 각각의 png를 BufferedImage로 변환하는 방법을 알지 못합니다. 이것은 모든 나가와 함께 한 것을 함께 :

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; 
    } 
} 
+1

왜이 작업을 수행하려고합니까? gzip 스트림을 사용하는 것으로 충분하지 않습니까? 사용자 정의 파일 형식을 만드는 이유는 무엇입니까? – ControlAltDel

+0

학습 목적으로 만 사용합니다. –

답변

1

당신은 specification for PNG을 조사해야합니다.

가장 간단한 용어로 IEND (0x73 0x69 0x78 0x68)을 찾을 때까지 4 바이트 덩어리를 배열로 읽으려고합니다. 그런 다음 javax.imageio.ImageIO.read();