【问题标题】:Can not display local image file as WebEngine image src attribute无法将本地图像文件显示为 WebEngine 图像 src 属性
【发布时间】:2012-08-30 14:26:03
【问题描述】:

我正在尝试动态设置我拥有的 img 标签的 src。以下代码在从 eclipse 运行时有效,但在将其导出为运行 jar 文件后无效:

doc.getElementById("user-thumb").setAttribute("src", selectedVcard.getThumb().getFilePath());

“user-thumb”id 得到的元素是一张图片。返回的 thumb 对象是一个简单的自定义 ImageView,我已对其进行了扩展以保存更多信息,并使用以下方法进行初始化:

public Thumb(String url) {
    super(url);
    this.setFilePath(url);
    getStyleClass().add("thumb");
}

getFilePath() 方法返回一个临时文件的路径,该路径以以下开头:

file:/

但我已经尝试将其更改为

file://

甚至:

file:///

并没有成功。我在这里用谷歌搜索过,但每个答案都以 file:// 开头。我的代码有问题还是 javafx 2 有问题?顺便说一句,我使用的是 javafx 2.2 GA 和 oracle 的 jre 1.7.0.6。干杯

【问题讨论】:

  • 这张图片是否在罐子里?
  • 不,它是通过套接字传递的文件,并作为临时文件存储在用户(客户端)机器中。请注意,在我的 Thumb (ImageView) 中图像显示完美,如果我在另一个窗口中使用 ContextMenuItem Show Image,WebView 甚至会显示图像,它只是不会显示它。它开始看起来像一个错误
  • 我猜你是作为点击运行jar而不是webstart或applet运行的? (否则安全限制可能会导致这种行为)。我还猜想无法从源文档的相对路径加载图像? (否则您可以使用相对路径来解决此问题)。
  • 我尝试先作为点击运行,然后意识到它可能会产生这种安全限制,所以即使在 Windows 7 下我也在使用控制台。这是一个跨平台应用程序,服务器位于Unix 环境和客户端在 Linux、MacOsX 和 Windows 上工作。我不能使用相对路径,因为它是一个临时文件,这意味着它具有系统提供的路径。
  • [这里][1] 有更好更简单的解决方案。 [1]:stackoverflow.com/questions/8923801/…

标签: webview javafx-2


【解决方案1】:

你可以使用Data URI for the images

有点像……

String imageMimeType = "image/jpeg"; // Replace this for the correct mime of the image
String dataURI = "data:" + imageMimeType + ";base64," + 
     javax.xml.bind.DatatypeConverter.printBase64Binary(imageByteArray);

【讨论】:

  • 感谢您的宝贵时间和您的回答!我明天去试试,因为我现在不上班!
  • @Bruno Vieira - 以防不明显,您需要根据图像的实际类型、gif、jpeg、png 等更改 imageMimeType 字符串。
  • 成功了!!!非常感谢您的贡献!这正是我所需要的!
猜你喜欢
  • 1970-01-01
  • 2014-02-15
  • 2020-09-06
  • 2021-12-24
  • 1970-01-01
  • 1970-01-01
  • 2020-10-25
  • 1970-01-01
  • 2018-05-25
相关资源
最近更新 更多