Увеличение определенной части BufferedImage - PullRequest
1 голос
/ 01 апреля 2012

Я пытаюсь получить вложенный образ 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();
}

Мне также было интересно, есть ли лучший способ реализовать увеличение конкретного прямоугольного выделения и использовать увеличенный в разделе, чтобы заменитьИсходное изображение.

1 Ответ

0 голосов
/ 27 марта 2013

Следует отметить, что размер вспомогательного изображения не должен превышать ширину и высоту исходного изображения.Например, если 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, в частности, в вашем случае.

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

...