2012-04-01 6 views
1

BufferedImageのサブ画像を取得し、このサブ画像を元のBufferedImageの代わりに使用して、ユーザーが指定した選択に基づいてズーム機能を実装しようとしています。しかし、サブイメージを元のイメージに再描画すると、サブイメージの下部が表示されません。なぜ私は考えていない。誰かが明白な欠陥を見つけられるかどうか疑問に思っていた!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

計算の残りの部分は、アルゴリズムによって異なります.....

関連する問題