I. Hintergrund
Wie erstelle ich ein Bild im Miniprogramm und teile es mit Moments? Derzeit scheint es keine gute Lösung für das Frontend zu geben, daher kann es nur vom Backend unterstützt werden.
Das Generieren von Bildern ist relativ einfach. Einfache Szenen können direkt von JDK unterstützt werden. Im Allgemeinen gibt es keine allzu komplizierte Logik. Ich habe zuvor eine Bildsyntheselogik geschrieben und sie mit awt implementiert: Bildsynthese , Komplexe Vorlagen
können direkt unterstützt werden, aber wenn das Backend komplexer ist, ist es zweifellos ekelhafter. Ich weiß nicht, ob ich nach einigen Open-Source-Bibliotheken zum Rendern von HTML gesucht habe Es liegt an der falschen Körperhaltung oder so, aber es gibt keine zufriedenstellenden Ergebnisse
Wie unterstützt man jetzt komplexe Vorlagen?
Dies ist die Anleitung dieses Artikels. Er verwendet PhantomJS zum Implementieren von HTML-Rendering, unterstützt das Generieren von PDFs, das Generieren von Bildern und das Parsen von Dom. Als Nächstes zeigen wir, wie PhantomJS kombiniert werden, um einen Dienst zu erstellen, der Webseiten in Bilder rendert
II. Vorbereitungsvoraussetzungen: 1. Installieren Sie phantom.js.# 1. 下载 ## mac 系统 wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-macosx.zip ## linux 系统 wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 ## windows 系统 ## 就不要玩了,没啥意思 # 2. 解压 sudo su tar -jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 # 如果解压报错,则安装下面的 # yum -y install bzip2 # 3. 安装 ## 简单点,移动到bin目录下 cp phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin # 4. 验证是否ok phantomjs --version # 输出版本号,则表示ok. 2. Java-Abhängigkeitskonfiguration, um Abhängigkeiten hinzuzufügen
<!--phantomjs --> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>2.53.1</version> </dependency> <dependency> <groupId>com.github.detro</groupId> <artifactId>ghostdriver</artifactId> <version>2.1.0</version> </dependency> <repositories> <repository> <id>jitpack.io</id> <url>https://jitpack.io</url> </repository> </repositories>
Testfall
public class Html2ImageByJsWrapper { private static PhantomJSDriver webDriver = getPhantomJs(); private static PhantomJSDriver getPhantomJs() { //设置必要参数 DesiredCapabilities dcaps = new DesiredCapabilities(); //ssl证书支持 dcaps.setCapability("acceptSslCerts", true); //截屏支持 dcaps.setCapability("takesScreenshot", true); //css搜索支持 dcaps.setCapability("cssSelectorsEnabled", true); //js支持 dcaps.setJavascriptEnabled(true); //驱动支持(第二参数表明的是你的phantomjs引擎所在的路径,which/whereis phantomjs可以查看) // fixme 这里写了执行, 可以考虑判断系统是否有安装,并获取对应的路径 or 开放出来指定路径 dcaps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "/usr/local/bin/phantomjs"); //创建无界面浏览器对象 return new PhantomJSDriver(dcaps); } public static BufferedImage renderHtml2Image(String url) throws IOException { webDriver.get(url); File file = webDriver.getScreenshotAs(OutputType.FILE); return ImageIO.read(file); } }
Die generierten Bilder werden nicht veröffentlicht. Wenn Sie interessiert sind, können Sie zum tatsächlichen Testen direkt auf meine Website gehen
III. Eine einfache Webanwendung wurde auf Alibaba bereitgestellt Cloud-Server, der die Funktion von HTML-Ausgabebildern unterstützt; Da ich die Beggars-Version gekauft und eine coole Front-End-Vorlage verwendet habe, wurde sie langsam geöffnet.Bedienungsdemonstration:
Das obige ist der detaillierte Inhalt vonSo verwenden Sie PhantomJs, um die HTML-Bildausgabefunktion in Java abzuschließen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!