inputStream에서 이미지를 만들 때 두 가지 방법을 사용했지만 두 방법 모두 실패합니다.Java를 inputStream에서 이미지 생성
첫번째 방법 : 엽니 동안
FileOutputStream out=new FileOutputStream(file)
byte[] byteBuffer = new byte[1024];
int length = 0;
while ((stream != null) && ((length = stream.read(byteBuffer)) != -1)){
out.write(byteBuffer,0,length);
}
out.flush()
out.close();
stream.close();
이 방법은 이미지를 생성하지만. "유효한 비트 맵 파일"이 아닙니다.
그리고 두번째 방법BufferedImage imBuff = ImageIO.read(stream);
ImageIO.write(imBuff, 'png', file);
그리고이 한 예외를 생성한다.
java.lang.IllegalArgumentException : image == null! javax.imageio.ImageTypeSpecifier.createFromRenderedImage (ImageTypeSpe cifier.java:925) javax.imageio.ImageIO.write에서 javax.imageio.ImageIO.getWriter (ImageIO.java:1591) 에서 에서 (ImageIO.java:1520) Grails의 grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter에서 PAG ( eFragmentCachingFilter.java:195)에서 : com.k12report.frontend.ClientAuthoringController $$ EOU2Lt2o.getImages (55 ClientAuthoringController.groovy)에서 . plugin.cache.web.filter.AbstractFilter.doFilter (AbstractFilter .java : 63) 의 java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor. java : 1145)java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor입니다 된 .java : 615)에서 363,210 java.lang.Thread.run (Thread.java:722)에서
감사
입니까? 내용은 무엇입니까? 내용을 디스크에 덤핑하고 외부 이미지 프로그램을 통해 유효성을 확인 했습니까? – MadProgrammer
stream = response.getEntityInputStream() – Biswas
올바른 이미지를 가지고 계십니까? 두 번째 방법에서,'imBuff'는'null'입니다. 이것은 ImageIO가 파일 형식을 인식하지 못할 때 발생합니다. 그 상황을 테스트해야합니다. 첫 번째 방법은 나에게 잘 어울립니다. 가독성과 성능을 위해 루프 외부에서'stream! = null'을 확인해야합니다. – haraldK