2013-04-01 3 views
0

http 요청으로 서블릿에서 이미지 파일을 읽는 중입니다. 사각형으로 잘라서 파일에 쓰고 싶습니다. 다음 코드를 사용하여이 작업을 수행 할 수 있지만 임시 파일을 사용하여 원본 이미지를 먼저 작성하고 있습니다. 어떻게 임시 파일Java로 업로드 된 이미지 자르기

    File tempFile = new File(saveFileFrameTemp); 
        fileOut = new FileOutputStream(tempFile); 
        fileOut.write(dataBytes, startPos, (endPos - startPos)); 
        fileOut.flush(); 
        fileOut.close(); 

        BufferedImage fullFrame = ImageIO.read(tempFile); 
        int height = fullFrame.getHeight(); 
        int width = fullFrame.getWidth(); 
        if (height > width) 
         ImageIO.write(fullFrame.getSubimage(0, (height-width)/2, width, width), "jpg", new File(saveFileFrame)); 
        else 
         ImageIO.write(fullFrame.getSubimage((width-height)/2, 0, height, height), "jpg", new File(saveFileFrame)); 

        tempFile.delete(); 

답변

0

으로 새로운 BufferedImage를 작성하지 않고 BufferedImage를자를 수 없다고 할 수 있습니다.

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
baos.write(dataBytes, startPos, (endPos - startPos)); 

BufferedImage fullFrame = ImageIO.read(new ByteArrayInputStream(baos.toByteArray())); 

내가 http://www.mkyong.com/java/how-to-convert-byte-to-bufferedimage-in-java/

0

를 사용하지 않고 당신은 내가이 ByteArray 사용하여 해결 부작용

+0

그게 전부 확인을 모두 내가 원하는 과정에서이 링크를 사용되는 임시 파일 및 추가 디스크 IO를 생성하지 않는 것입니다 –

관련 문제