У меня есть BufferedImage, которое довольно высокое (что-то вроде высоты 1100 пикселей) и не особенно широкое (возможно, 200-300 пикселей). Изображение состоит из графика данных, но большинство пикселей представляет цвет / значение фона, которое не очень интересно. Моя проблема заключается в том, что когда размер изображения изменяется с высоты 1100 пикселей до примерно 200-300 пикселей, многие пиксели, которые на самом деле содержали интересные данные, удаляются пикселями цвета фона. Есть ли какой-нибудь способ сказать алгоритмам 2D-масштабирования Java, что я предпочитаю пиксели с определенными значениями (или, лучше, что я хочу уменьшить приоритетность цвета фона) при изменении масштаба? Я использую следующий фрагмент кода для изменения масштаба изображения:
BufferedImage resized = new BufferedImage(width, height, imageType);
Graphics2D graphics2D = resized.createGraphics();
graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); //Has worked best in my case
graphics2D.drawImage(source, 0, 0, width, height, null);
graphics2D.dispose();
Я уверен, что в Java есть более эффективные способы изменения размера изображений, но это не интересно (по крайней мере, пока).
Как-то скучно то, что раньше я использовал библиотеку (которая больше не будет использоваться), которой действительно удалось сохранить большую часть ценных данных, представляющих пиксели.
Обратите внимание, что у меня есть необработанные данные о пикселях (двумерный массив int), если это поможет. Приложение будет обрабатывать множество изображений разных размеров, поэтому я не знаю точно, что высота обязательно составляет 1100 пикселей.
Спасибо.