2012-04-01 4 views
1

BufferedImage의 subImage를 가져온 다음이 subImage를 사용하여 원래 BufferedImage을 대체하여 사용자가 지정한 선택 항목을 기반으로 확대/축소 기능을 구현하려고합니다. 그러나 원본 이미지 위에 subImage를 다시 그릴 때 하위 이미지의 맨 아래가 표시되지 않습니다. 나는 이유를 모른다. 누군가 명백한 결함을 발견 할 수 있는지 궁금 해서요! 특정 사각형 선택에 확대 구현하고 원본 이미지를 대체하기 위해 절 확대 사용하는 더 나은 방법이 있는지BufferedImage의 특정 부분을 확대

private void zoomImage(int x1, int x2, int y1, int y2){ 
    BufferedImage subImage = originalImage.getSubimage(x1, y1, x2-x1, y2-y1); 
    Graphics2D graphics2D = (Graphics2D) originalImage.getGraphics(); 
    graphics2D.drawImage(subImage, 0, 0, 600, 400, 0,0, x2-x1,y2-y1, null); 
    // clean up 
    graphics2D.dispose(); 
} 

나는 또한 궁금 해서요.

답변

0

하위 이미지의 크기가 원래 이미지의 너비와 높이를 초과해서는 안됩니다. 예를 들어, originalimage.width=600orignalimage.height=800 인 경우 크기가 subimage.horizentalorigin+subimage.width<=600subimage.veticalorigin+subimage.height<=800이어야하는 하위 이미지를 만들 수 있습니다. 그렇지 않으면 이미지의 모서리에 항상 어두운 그림자가 나타납니다.

  • subimage.horizentalorigin=x1 , 특히 귀하의 경우
  • subimage.verticalorigin=x2
  • ,
  • subimage.width=y1
  • ,
  • subimage.height=y2.

당신이 계산의 나머지 알고리즘을 알고리즘에 따라 다릅니다 .....

관련 문제