Когда я устанавливаю изображение с фактическим размером на панель и обрезаю его с помощью мыши, он работает нормально, но когда я изменяю размер изображения на панель и обрезаю, получается неправильное изображение обрезки. Как обрезать изображение для изменения размера с помощью мыши?
int x = Math.min(p1.x, p2.x);
int y = Math.min(p1.y, p2.y);
int w = Math.abs(p1.x - p2.x);
int h = Math.abs(p1.y - p2.y);
BufferedImage dest = image.getSubimage(x,y,w,h)
How to crop resize image using mouse? - так же, как вы кадрируете исходное изображение. but when i resize image onto panel Вам просто нужно убедиться, что вы ссылаетесь на "изменение размера" изображения, когда делаете кадрирование. Опубликуйте свой минимальный воспроизводимый пример, демонстрирующий проблему, если вам нужна дополнительная помощь.
но я выбираю область из изменения размера изображения и обрезки из этого исходного изображения
cropping from that original image - это моя точка зрения. Не делай этого. Вам нужно обрезать изображение с измененным размером !!! Это изображение, которое теперь видно на панели. Если вы хотите обрезать исходное изображение, вам нужно будет вычислить масштабные коэффициенты x / y двух изображений. Затем вам нужно будет отрегулировать значения x / y / ширины / высоты с помощью этих масштабных коэффициентов.
Спасибо, но я новичок в этом. Могу ли я предложить мне несколько примеров или руководств, связанных с этим?
@shrishri, Can suggest me some examples or tutorials related to this? - С чем связано? Я предлагаю два подхода: 1) который прост, поскольку вы просто сохраняете ссылку на изображение с измененным размером, чтобы вы могли его обрезать, если хотите, и 2) используйте базовую математику для расчета коэффициента масштабирования между исходным и измененным изображениями. В любом случае я уже предоставил более подробную информацию о втором подходе в своем ответе.




If you want to crop from the original image then you will need to calculate the x/y scale factors of the two images. Then you will need to adjust the x/y/width/height values by these scale factors.
Итак, если ваше исходное изображение имеет размер 400 x 100, а изображение с измененным размером - 100 x 100, вы должны сделать что-то вроде:
double xScale = originalImageWidth / resizeImageWidth = 400 / 100 = 4.
Итак, теперь, если прямоугольник обрезки на изображении с измененным размером равен (10, 10, 20, 30);
Затем вам нужно рассчитать свои значения примерно так:
int x = rectangle.x * xScale;
int width = rectangle.width * xScale;
image.getSubImage(x, y, width, height);
Очевидно, вам нужно будет рассчитать значения y / высоты, используя коэффициент масштабирования y.
с помощью этого метода я получаю неправильное изображение при обрезке, потому что я получаю значение масштабирования в точку, и когда я умножаю на x, y, w, h, оно принимает целочисленное значение, что означает, что зазор между точками дает неправильную обрезку.
Разместите свой минимальный воспроизводимый пример, демонстрирующий проблему. Понятия не имею, что ты делаешь.
Добро пожаловать в SO. Пожалуйста, возьмите тур и посмотрите Как мне задать хороший вопрос?.