Подразумевает ли чтение ImageIO сглаживание масштабирования?

Я заменил внутренний Java ImageFetcher собственной реализацией, использующей ImageIO. Некоторые визуализаторы изображений нашего программного обеспечения, которые используют эти изображения, теперь рисуют масштабированные изображения со сглаживанием вместо сглаженных. Единственным изменением является источник изображения, который теперь является BufferedImages вместо Toolkit-Images.

Теперь вопрос, где разница? Какое свойство заставляет изображения масштабироваться со сглаживанием? Я всегда думал, что ключ сглаживания зависит ТОЛЬКО от графики, на которой я рисую, но это явно неправильно.

Кстати: к сожалению, я не могу изменить рендереры.


person tigger    schedule 17.12.2009    source источник
comment
Можете ли вы предоставить нам подробную информацию о различных платформах, на которых работают средства визуализации изображений, и наблюдаемом поведении? Это может иметь большое значение для выяснения того, что происходит. Например, реализация Java2d для Mac основана на Quartz 2d, что может привести к значительным отличиям от реализации Sun.   -  person Ichorus    schedule 18.12.2009


Ответы (2)


Если ImageIO.read выполняет какое-либо сглаживание, это, вероятно, проблема, связанная с платформой, как указывает @Ichorus, поскольку ImageIO.read ничего не указывает об ожидаемом поведении для масштабирования или сглаживания.

Что вы можете попробовать сделать, так это ваши подсказки рендеринга для вашего контекста Graphics2D перед выдачей g.drawImage или аналогичного.

http://bit.ly/7b6lvg ‹ — документация Java Sun по Graphics2D.setRenderingHint

person Kristopher Ives    schedule 30.12.2009

Хорошо, в конце концов есть одно важное отличие: BufferedImages — это RenderedImages, а ToolkitImages — нет. В некоторых случаях это может привести к непоследовательному поведению, но в целом похоже, что это не проблема Java.

person tigger    schedule 17.12.2009