【发布时间】:2016-11-06 05:39:14
【问题描述】:
我正在使用此代码 (test.html) 生成一个带有 JDenticon 的网站:
<!DOCTYPE HTML>
<html>
<head>
<title>Test</title>
</head>
<body>
<script src="https://cdn.jsdelivr.net/jdenticon/1.3.2/jdenticon.min.js" async></script>
<svg width="200" height="200" data-jdenticon-hash="ff8adece0631821959f443c9d956fc39">
Fallback text for browsers not supporting inline svg</svg>
</body>
</html>
我想让 Java 桌面应用程序可以访问此代码中生成的图像,并希望将其保存在我的 PC 上。这可能吗,也许还可以更改hascode (ff8adece0631821959f443c9d956fc39)
它的代码是什么?
编辑#1:
我在 JDenticon 的 API 中发现了一些看起来像这样并用于 .NET Framework 的东西:
var engine = new Jurassic.ScriptEngine();
engine.ExecuteFile("<path to jdenticon.js>");
engine.SetGlobalValue("size", 200);
engine.SetGlobalValue("hash", "ff8adece0631821959f443c9d956fc39");
var svg = engine.Evaluate<string>("jdenticon.toSvg(hash, size)");
File.WriteAllText("testicon.svg", svg);
我想在 Java 中做这样的事情,发现 Java ScriptEngine(教程:Oracle)。但是我不知道怎么用,现在我的代码是这样的:
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
engine.put("size", 200);
engine.put("hash", "ff8adece0631821959f443c9d956fc39");
String svg = (String) engine.eval(new java.io.FileReader("C:/jdenticon.js"));
这显然行不通,因为它没有调用 jdenticon.js 文件中的 jdenticon.toSvg(hash, size) 方法。因此,如果有人知道如何用这个解决问题,那就太好了。
【问题讨论】:
-
你看过
JDenticon的文档吗? -
@amn 好吧,我想我有但还没有找到 Java 的解决方案。
-
Java? JDenticon 是一个 JavaScript 库——它在客户端工作。也就是说,我认为您将能够通过 Node.js 在服务器端呈现图标。您可能不得不将 JDenticon 移植到 Java 源代码中,以便让它将图标呈现为 Java 应用程序。另外,请记住,您不必为图标使用 SVG - 您可以使用
canvas,这也记录在 JDenticon 页面上。 -
@amn 生成画布会更容易吗?我不管是canvas还是svg,我只是想最后通过Java获取图片。
-
您需要向我解释 Java 在您的 JDenticon 应用程序中的哪些方面。否则很难说。在我看来,对于您的应用程序,
canvas或svg并不重要。 Java 可以是一个小程序(可以说已被弃用),也可以是一个 servlet(服务器端)或独立的桌面程序。 Java 有很多东西。您能否更新您的问题并详细说明 Java 的位置和方式?
标签: javascript java svg javax.script identicon