png 파일을 읽고 쓸 때 문제가 발생했습니다. ImageIO로 바이트 배열을 읽은 다음 ImageIO를 사용하여이 바이트 배열을 다시 작성합니다. 그러나 파일 크기가 크게 증가합니다. 어떻게 될 수 있습니까?Java에서 PNG 읽기 및 쓰기로 파일 크기가 증가합니다.
public BufferedImage toBufferedImage(InputStream inputstream) {
try {
return ImageIO.read(inputstream);
} catch (Exception e) {
throw new IllegalStateException("Can't convert to buffered image", e);
}
}
public byte[] toByteArray(BufferedImage bufferedImage, String filetype) {
ByteArrayOutputStream output = new ByteArrayOutputStream();
try {
ImageIO.write(bufferedImage, filetype, output);
return output.toByteArray();
} catch (Exception e) {
throw new IllegalStateException(e);
}
}
는을 따르 자바로 작성하고 네이티브 코드를 필요로하지 않는 압축 PNG 파일을 지원하는 모든 라이브러리가?
을 또는 헤더에 여분의 데이터를 추가하는 것. 이것이 맞는지 확인하는 좋은 방법은 Beyond Compare와 같은 파일에서 두 파일을 열고 모든 차이가 시작 부분 (헤더 위치)에 있는지 확인하는 것입니다. 그렇지 않다면 차이점이 어디에나있을 수 있습니다. 따라서 파일 전체에 빈 데이터를 추가하는 것이 좋습니다. 그것이 파일을 다시 인코딩했기 때문에 그것이 의심 스럽지만 가능성이있을 수 있습니다. –
필자는 압축에 대해 매우 영리하지 못하다. 아마도 형식을 압축 할 수있는 더 나은 출력 스트림 또는 기록기 구현이 있을까요? 패키지의 javadoc은이 기능과의 인터페이스를 암시합니다. – IanGilham