2009-04-05 9 views
0

Проект, над которым я работаю, нуждается в изменении размера при изменении разрешения монитора. Из-за устаревшего кода и других проблем мы делаем это с помощью специальной библиотеки, которая масштабирует все компоненты до соответствующих размеров при изменении разрешения.Масштабирование изображений/значков в Java

Однако, когда мы масштабируем некоторые изображения/значки, используемые в проекте, они становятся размытыми/нечеткими/сглаженными. В основном потому, что они все растровые gif.

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

Что вы все думаете? Будет ли это хорошим способом? Или есть лучшие альтернативы моему выбранному методу?

Если это лучший способ, то кто-то может дать указателям, как идти о преобразовании svg, чтобы сказать jpg или png (желательно). Доступные (и коммерчески доступные) библиотеки?

Благодаря

ответ

0

Batik может конвертировать SVGs в формате PNG или JPEGs

2

В Algo-х в Java довольно хорошо. Основная проблема звучит так, как будто ваши исходные изображения/значки уже слишком малы, поэтому их масштабирование оставляет вас с артефактами. Реальный простой подход заключается в том, чтобы изображения, отправленные вместе с приложением, были в большем размере и только уменьшались. Я бы сказал, что политика размеров изображений (высота и ширина пикселей) необходима, поскольку вы, кажется, указываете, что только некоторые из них имеют проблемы.

Конечно, если вы можете пойти на векторную графику, вы можете масштабировать бесконечно, и это может быть лучшим долгосрочным инвестированием в зависимости от вашего приложения и вероятной капюшона, необходимой для поддержки больших форматов вывода (а не только для экранов, но для печати). Возможно, довольно сложно подойти к этому. (Дополнительная информация будет необходима, чтобы помочь вам в дальнейшем с пунктами настоящего параграфа.)

+1

Хотя это было бы «более чистым» решением для переключения на векторные изображения; это было бы намного быстрее, проще и вводить меньше зависимостей, чтобы просто создавать большие растровые изображения и уменьшаться. Поскольку я сомневаюсь, что ваша проблема с размытым изображением стоит больших инвестиций, я бы предложил этот подход. –

0

Значки на Металлической (поперечной платформе) PL & F втягиваются в буферное изображение, чтобы смешиваться с любой машиной это происходит, когда он работает. Это быстрая техника, не добавляет зависимостей, и нет необходимости изучать дополнительные API (или языки!). См. src.zip в вашем Sun JDK.