2014-06-17 13 views
0

나는 excel (xls, xlsx) 파일을 html로 변환 중입니다. 그러나 이미지가있을 때 엑셀 파일에있는 이미지 크기 (치수)를 얻을 수 없습니다. 나는 아파치 포이를 사용하고 있습니다. 해당 파일의 이미지 크기를 얻는 방법은 무엇입니까? 그걸 도와주세요.엑셀 파일을 읽을 때 그림 크기를 얻는 방법은 무엇입니까?

+0

어떤 크기를 원하십니까? 이미지 크기 (바이트)? 이미지의 네이티브 크기 (픽셀 단위)? 일부 단위로 Excel에 표시된 크기 조정? 다른 것? – Gagravarr

답변

0

이 소스는 엑셀 파일에서 그림 데이터를 얻는 방법을 설명합니다 : http://poi.apache.org/spreadsheet/quick-guide.html#Images.

는 루프 내에서

byte[] data = pict.getData(); 

당신은, 그 바이트 배열을 사용하십시오있는 ByteArrayOutputStream 객체에 작성하고 OutputStream에 기록 된 파일의 크기를 검색 할 크기() 메소드를 호출 할 수있다.

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
baos.write(data); 
int fileSizeInBytes = baos.size(); 

이 정보가 도움이되기를 바랍니다.

+0

이것은 단지 이미지의 총 바이트 크기를 반환합니다. 치수를 얻으려면 이미지 유형을 알아 내고 바이트 배열에서 이미지 헤더를 디코딩해야합니다. –

+0

오, 나는 그가 그림의 파일 크기가 아니라 크기를 알아 내려고 노력하고 있다고 생각했습니다. 내 사과. –

+0

예 마이클 저는 그림의 차원을 얻으려고합니다. – Meastro

0

과도 할 수도 있지만 바이트 배열에서 이미지를 만들고 크기를 확인할 수 있습니다. 예 :

for (HSSFPictureData pic : workbook.getAllPictures()) { 
    InputStream in = new ByteArrayInputStream(pic.getData()); 
    BufferedImage image = ImageIO.read(in); 
    System.out.println(image.getWidth() + ":" + image.getHeight()); 
} 
관련 문제