2012-04-01 7 views
1

Я пытаюсь получить subImage из BufferedImage, а затем использовать этот 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=600 и orignalimage.height=800 затем может быть создано вспомогательное изображение, размер которого должен быть subimage.horizentalorigin+subimage.width<=600 и subimage.veticalorigin+subimage.height<=800. Другим мудрым всегда будет темная тень, найденная в углах изображения.

  • subimage.horizentalorigin=x1,
  • subimage.verticalorigin=x2,
  • subimage.width=y1,
  • subimage.height=y2 в вашем случае особенно.

Остальные вычисления, которые вы делаете, варьируются от алгоритма до алгоритма .....

Смежные вопросы