Масштабирование изображения до нескольких размеров для Deep Zoom
-
08-07-2019 - |
Вопрос
Предположим, у меня есть растровое изображение с квадратным аспектом и шириной 2048 пикселей.
Чтобы создать набор файлов, необходимый для DeepZoomImageTileSource
Silverlight, мне нужно масштабировать это растровое изображение до 1024, затем до 512, затем до 256 и т. д. до 1 пиксельного изображения.
Есть два, я подозреваю, наивных, подхода: -
<Ол>Обратите внимание, что в отличие от Deep Zoom Composer этот инструмент должен работать по требованию, поэтому его необходимо завершить в разумные сроки (максимум 30 секунд). С другой стороны, я создаю только одно многомасштабное изображение, а не пирамиду из нескольких изображений с высоким разрешением.
Я нахожусь за пределами моей зоны комфорта, какие-нибудь эксперты в области графики получили какие-либо советы? Я не прав насчет пункта 2? Является ли пункт 1 достаточно эффективным, и я ни о чем не беспокоюсь? Вариант 3?
Решение
Около 1: это кажется лучшим способом. И это не так уж и чрезмерно, если вы не перезагружаете исходное изображение каждый раз.
Около 2: Да, вы бы потеряли (немного) качество, масштабируя его по шагам. Р>
Я думаю, 30 секунд должно быть достаточно для масштабирования изображения (несколько раз). Любая оптимизация будет связана с кэшированием результатов.
Другие советы
По сути, вы пытаетесь создать MipMaps (см. http://en.wikipedia.org / вики / Mipmap ). Если вы начнете с изображения размером 2 квадрата, то уменьшите изображение до половины его размера, а затем используйте уменьшенное изображение, чтобы уменьшить его размер еще на 2, и получите те же результаты, что и исходное изображение и его уменьшение на коэффициент 4.
Каждый пиксель в полуразмерном изображении будет в среднем равен 4 пикселям в исходном изображении. Каждый пиксель в изображении четвертого размера будет в среднем 16 пикселей. Неважно, если вы берете в среднем 16 пикселей или 4 пикселя, то есть в среднем 4 других пикселя.
Так что я бы сказал, что вы будете в порядке с последовательным уменьшением изображений, как вы упомянули в варианте 2. Если вы хотите быть уверены, попробуйте оба способа и сравните изображения.
Я понимаю, что этот вопрос старый, и, возможно, есть причина, по которой вы этого не сделали, но если вы получаете бесплатный Deep Zoom Composer от Microsoft, он поставляется с библиотекой DLL для создания Deep Zooms, "DeepZoomTools.dll". Он создаст композиции Deep Zoom одного изображения или композиты из множества изображений. (Класс ImageCreator
выполняет тяжелую работу по изменению размера изображений).
Вам следует изучить последствия лицензирования, если вы разрабатываете коммерческое приложение, но повторное использование кода всегда лучше, чем его написание самостоятельно.