Я читал инструменты для разработчиков OS X Java, чтобы помочь сделать мое приложение более «родным» с операционной системой. Я нашел что-то интересное в этом section. (Курсив мой)Как Java загружает собственные NSImages?
Чтобы загрузить разрешение независимого TIFF, ICNS, или в формате PDF файла из папки ресурсов вашего пакета приложения в приложение Java, используйте
getImage()
методjava.awt.Toolkit
. Строка, которую вы передаете вgetImage()
, имеет форму"NSImage://MyImage"
. Не включайте расширение файла изображения. Также имейте в виду, что 2D-рендер Sun отключен, когда коэффициент масштабирования пользовательского интерфейса не имеет значения 1.0. Используйте инструмент Quartz renderer, чтобы ваши изображения масштабировались плавно.
Будучи знакомым с javax.imageio
, это является полной неожиданностью, поскольку я не знал другого способа загрузить другие типы файлов в изображения. Особенно с устаревшей платформой и абсолютно никакой поддержкой для файлов, таких как .tiff
. Например, быстрый тест на моем компьютере дает мне это:
Supported read formats: [jpg, bmp, gif, png, wbmp, jpeg]
Supported write formats: [jpg, bmp, gif, png, wbmp, jpeg]
'JPEG' reader: [email protected]
'JPEG' reader: [email protected]
Я попытался загружая простой .tiff
изображение и испытания это:
static Image n; public static void main(String[] args) { JFrame f = new JFrame(); JPanel p = new JPanel() { @Override public void paintComponent(Graphics graphics) { graphics.drawImage(n, 0, 0, null); } } f.add(p); n = Toolkit.getDefaultToolkit().getImage(("/Users/zinedine/Desktop/test_image.tiff"); f.setVisible(true) }
Это дает ничего:
Я попробовал еще раз: на этот раз добавив изображение в базовую папку моего проекта java и набрав его как строку: "NSImage://test_image.tiff"
. Как и все, что я делаю, это не работает.
Однако, если я изменить свою причудливую строку пути к NSImage один, таких как "NSImage://NSApplicationIcon"
...
Он работает. Я быстро просмотрел поиск NSImage и нашел его. Похоже, тип файла для этих изображений: .png
. Это отвратительно, так как я ожидал, что из него выйдет правильный образ. Имейте в виду, я тоже ожидал этого: если он ожидает аргументы формы "NSImage://something"
, тогда он может просто игнорировать что-либо еще.
Очевидно, что у меня есть несколько вопросов:
Каким Toolkit загрузить изображение? Если я пытаюсь загрузить
.tiff
изображение с моего рабочего стола, это то, что я получу, если я называю.toString()
:[email protected] // Also can't be cast to java.awt.BufferedImage
ли читатели (и авторы, если таковые имеются) часть общественного API? Другими словами, я могу назвать что-то, чтобы загрузить мой
.tiff
файл вImage
(который я могу затем бросить в `BufferedImage?А потом снова, если читатели/писатели являются частью API, почему Безразлично» t пакет
javax.imageio
найти их?
Это может выглядеть, как горсть, (да, я прошу прощения за губит свой день по этому вопросу), но мне, это выглядит, как и следовало ожидать, но в то же время ошибочного поведения. Бонусные отметки: Есть ли дружественные (например, Open Source) изображения api (не JAI), которые могут обрабатывать файлы .tiff
(и другие)?
Что такое ??? Мастер! Вы вернулись! – Zizouz212