Вы не можете обрезать изображение больше, только меньше.Итак, вы начинаете с измерения цели, скажем, 100x100.И ваш BufferedImage
(bi
), скажем, 150x50.
Создайте прямоугольник вашей цели:
Rectangle goal = new Rectangle(100, 100);
Затем пересекайте его с размерами вашего изображения:
Rectangle clip = goal.intersection(new Rectangle(bi.getWidth(), bi.getHeight());
Теперь клип соответствует той части bi
, которая соответствует вашей цели.В этом случае 100 x50.
Теперь получите subImage
, используя значение clip
.
BufferedImage clippedImg = bi.subImage(clip,1, clip.y, clip.width, clip.height);
Создайте новый BufferedImage
(bi2
), размерgoal
:
BufferedImage bi2 = new BufferedImage(goal.width, goal.height);
Заполните его белым (или любым другим цветом bg, который вы выберете):
Graphics2D big2 = bi2.getGraphics();
big2.setColor(Color.white);
big2.fillRect(0, 0, goal.width, goal.height);
и нарисуйте на нем обрезанное изображение.