[如何正确从JavaFX的剪贴板中获取图像;挣扎的应用程序与不挣扎的应用程序之间有什么区别?

问题描述 投票:28回答:1

JavaFX从Windows剪贴板获取图像的默认方法,

Clipboard.getSystemClipboard().getImage();

,似乎已损坏。

图像的透明度似乎出了问题。设置在黑色背景上,图像看起来不错,但是设置在白色背景上,什么也没有显示。

Showing the JavaFX image transparency issue by changing the background of the application from dark to light.

您可以使用this Minimal, Complete, Verifiable example测试剪贴板。

环境:Windows 7,Java 8更新202

我知道

下面,我将描述我已经知道的事情。

还有其他人问过类似的问题:

  • Image from clipboard not correctly displayed in JavaFX 8 application
  • 但是,没有人成为问题的核心或没有得到答案。

    没有官方错误

    我似乎在Java Bug Database中找不到与此问题有关的错误。

    AWT没问题

    此图像问题在AWT剪贴板上不会发生,但是我想要一个使用

    JavaFX剪贴板的解决方案。On the right is the image from AWT's clipboard, on the left is the same image from JavaFX's clipboard.

    剪贴板包含多种格式

    我知道Windows剪贴板包含同一事物的多个版本,只是格式不同。使用InsideClipboardFree Clipboard Viewer很容易看到。

    A screenshot of InsideClipboard, showing the CF_DIB format.

    JavaFX剪贴板可识别某些格式;有时,它们的名称不同。 application/x-java-rawimage是Java认为的图像;在代码中,您将此称为DataFormat.IMAGE

    [我怀疑Windows中的DIB剪贴板格式与Java的application/x-java-rawimage相匹配,但是在源代码中找不到这种格式的证明。

    问题广泛传播

    问题应用程序

    JavaFX似乎在将图像复制到剪贴板的各种应用程序中也存在相同的透明性问题:

  • 没有问题的应用程序
  • 我还发现了一些将图像复制到剪贴板的应用程序,JavaFX可以使用默认方法将其拉出没问题:

      Google.com
    • [按钮
    • Windows截图工具Google Chrome 72.0.3626.121(复制Paint.net徽标)
    • 答案
    • 适当的答案应该

    解释

      简单,
    • 特定和带有示例为什么某些应用程序而不是其他应用程序出现问题,以及弄清楚JDK实现中出了什么问题,并具体显示了如何为大多数有问题的应用程序修复所说的实现,而又不破坏已经运行的应用程序。
    • 如果无法更改JDK的实现,则适当的答案将提供Google.com,其中显示JavaFX代码,当从Adobe Reader复制图像时,该代码会从JavaFX剪贴板产生Minimal, Complete, and Verifiable example
      [如果您不能帮助,但认为这是Image问题,请考虑投票或与朋友分享。
  • 问题JavaFX从Windows剪贴板获取图像的默认方式,Clipboard.getSystemClipboard()。getImage(); ,似乎已损坏。 ...
  • image javafx memory bitmap clipboard
    1个回答
    0
    投票
    不幸的是,此问题源于一个更深层次的问题,可能无法解决,请参见:well researched
    © www.soinside.com 2019 - 2024. All rights reserved.