2014-12-12 2 views
2

하나의 S3 버킷에서 다른 S3 버킷으로 파일을 이동해야한다는 요구 사항이 있습니다.이 프로세스 중에 파일 (이미지 파일)을 분할해야합니다. 내가 SheetImageSplitter's split() 방법 내부아파치 camel AWS-S3 메시지를 분할하는 방법

camelContext.addRoutes(new RouteBuilder() { 

     @Override 
     public void configure() throws Exception { 

      from(sourcePoint.getS3SourcePoint()).split().method(new SheetImageSplitterImpl(), "split").to(destinationPoint.getS3DestinationPoint()); 
     } 
    }); 

    camelContext.start(); 

을하고있는 중이 야 어떻게

그래서,이, 나는 이미지 파일을 분할하는 로직을 구현하려합니다. 교환 본문은 S3Object.inputStream 유형의 본문을 반환합니다. 나는 이미지 파일을

주를 처리 할 수 ​​있도록 나는 방법이 있나요 이미지 파일

public List<Message> split(Exchange exchange) { 

    System.out.println(exchange.getIn().getBody()); 
} 

에 S3ObjectInputStream를 변환하는 도움을 찾을 수없는 : 나는 자바 DSL

답변

1

당신은 InputStreamS3ObjectInputStream 및 메시지

public List<message> split(Exchange exchange){ 
     InputStream iStream = (InputStream) exchange.getIn().getBody(); 
     File file = new File("tmp/filename.jpg"); 
     FileUtils.copyInputStreamToFile(iStream, file); 

     List<File> files = <your splitting logic method> 

     List<Message> messageList = new ArrayList<Message>(); 
     for (File file : files) { 
      DefaultMessage message = new DefaultMessage(); 
      InputStream ip = new FileInputStream(file.getName()); 
      message.setBody((InputStream) ip); 
      messageList.add(message); 
    } 
    return messageList; 
} 
에 다시 넣어 변환 할 수 있습니다
1

을 사용하고 왜 당신을 이미지 파일을 분할해야합니까? S3는 알지 못하지만 다음 코드는 이미지 파일을 만들어야합니다.

BufferedImage imBuff = ImageIO.read(inputStream); 

희망이 있습니다.

관련 문제