2016-08-18 5 views
0

demoJava приложения получать запущен при попытке сгенерировать миниатюру из массива изображений байт

Код:

public byte[] getThumbnail(byte[] imageBytes) throws Exception { 
    ByteArrayInputStream inputStream = new ByteArrayInputStream(imageBytes); 
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); 
    Thumbnails.of(inputStream).size(50, 50).keepAspectRatio(true) 
      .outputFormat("jpg").toOutputStream(outputStream); 
    byte[] picture = outputStream.toByteArray(); 
    return picture; 
} 

Я пытаюсь создать эскиз из изображения в коде выше.

Когда я вызываю указанную выше функцию, она запускает значок Java, который показан на моем скриншоте. Если я попытаюсь закрыть этот значок, мое приложение закрывается.

+0

Можете ли вы указать контекст, в котором вы вызываете метод? – AlterV

+0

Думаю, я уже написал, что в моем сообщении выше, я пытаюсь создать эскиз для данного изображения. У меня есть массив байтов [], и мне нужен байт [] для миниатюры. –

+0

Я попытался отладить код, значок java запускается по адресу: 'Thumbnails.of (inputStream) .size (50, 50) .keepAspectRatio (true) .outputFormat (" jpg "). ToOutputStream (outputStream); ' –

ответ

1

Появляется значок док-станции, потому что для использования какого-либо кода изображения используйте awt под капотами. Это приводит к появлению значка док-станции на OS X. Однако можно подавить значок.

Кросс-платформенный способ выполнения этого приложения запускает ваше приложение в режиме «без головного убора», то есть без взаимодействия с пользователем с помощью мыши, клавиатуры или экрана (например, окон). Вы можете задать обезглавленный режим при запуске, используя свойство системы java.awt.headless в командной строке, например так:

java -Djava.awt.headless=true 

В качестве альтернативы, в коде следующим образом:

System.setProperty("java.awt.headless", "true"); 

Для OS X (и Apple, JRE) в качестве альтернативы вы можете использовать свойство системы apple.awt.UIElement, он будет подавлять только значок док-станции, но в противном случае пусть ваши использование приложения окна и т.д .:

java -Dapple.awt.UIElement=true 

From the documentation:

Подавляет нормальное приложение Значок док-станции и строку меню. Только для фоновых приложений, которые показывают значок в трее или другой альтернативный пользовательский интерфейс для доступа к окнам приложений. В отличие от java.awt.headless=true, это не подавляет окна и диалоги от фактического появления на экране. Значение по умолчанию: false.