У меня очень большая карта привет-Res, которую я хочу использовать в приложении (размер изображения составляет около 80 мб).Масштабирование и загрузка очень большого файла TIFF
Я хотел бы знать следующее:
- Как я могу загрузить это изображение как можно лучше? Я знаю, что загрузка изображения займет примерно несколько секунд (это нормально), но я хотел бы уведомить пользователя о прогрессе. Я хотел бы использовать определенный режим и показывать это в виде
JProgressBar
пользователю. Это должно отражать количество загруженных байтов или что-то в этом роде. Есть ли способ загрузки изображений, который может обеспечить эту функцию (например,ImageIO.read()
)? - Поскольку карта имеет очень высокое разрешение, я хотел бы предложить пользователю прокрутить, чтобы увеличивать и уменьшать масштаб. Как я могу сделать это наилучшим образом? Я знаю, что для масштабирования
BufferedImage
стандартный способ займет очень большой срок для такого большого файла. Есть ли эффективный способ сделать это?
Благодарим за внимание!
Уважением,
Эктор ван ден Boorn
P.S. Изображение будет нарисовано на холсте JPanel.
Привет, Андрей, Большое вам спасибо за вашу помощь; все отлично работает и быстро загружается. Без вашего опыта и объяснений я бы все еще работал над этим, чтобы вы заслужили награду и площадь.
Я сделал следующее: используя imagemagick, я создал несколько изображений разного разрешения и в начале выполнения загрузил только самые маленькие res. образ. Остальные загружаются в отдельные потоки, поэтому выполнение не останавливается. Используя предоставленную вами информацию, я затем использую соответствующие изображения при масштабировании или выходе. Я немного скептически отношусь к использованию плиток, потому что мне нужно нарисовать собственные изображения поверх карты, и я не мог найти функцию краски во внешней банке, которую вы мне сказали, поэтому я в итоге использовал что-то простое; когда масштабирование или панорамирование режима масштабирования установлено на быстрый, и когда вы не масштабируете или панорамируете, масштаб масштабирования настроен на сглаживание для изображений, идеально подходящих для пикселя (как и вы предполагали), но это оказывается достаточно быстрым, и я не уверен, Мне нужны плитки (хотя я вижу, что с более крупными изображениями это было бы необходимо, и я понимаю информацию, которую вы мне дали).
Так что спасибо еще раз и все работает отлично :)
Возможно, это вариант для отслеживания прямоугольника, который нужно отобразить и выбрать часть изображения для зрителя? Как это работает с панорамированием изображения (перемещение изображения, например, влево)? –