尝试从图像字节数组生成缩略图时启动Java应用程序

时间:2016-08-18 15:20:29

标签: java bufferedimage

demo

代码:

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图标,该图标显示在我附带的屏幕截图中。如果我尝试关闭此图标,我的应用程序将关闭。

1 个答案:

答案 0 :(得分: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,它只会禁用停靠栏图标,但会让您的应用使用Windows等。

java -Dapple.awt.UIElement=true

From the documentation

  

禁止显示正常的应用程序Dock图标和菜单栏。仅适用于显示托盘图标或其他备用用户界面以访问应用程序窗口的后台应用程序。与java.awt.headless=true不同,这并不会抑制实际出现在屏幕上的窗口和对话框。   默认值为false