内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

Java中PhantomJs如何完成html圖片輸出功能

這篇文章將為大家詳細講解有關(guān)Java中PhantomJs如何完成html圖片輸出功能,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)是一家專業(yè)提供菏澤企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計制作、成都網(wǎng)站設(shè)計、HTML5建站、小程序制作等業(yè)務(wù)。10年已為菏澤眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。

借助phantomJs來實現(xiàn)將html網(wǎng)頁輸出為圖片

I. 背景

如何在小程序里面生成一張圖,分享到朋友圈呢?目前前端貌似沒有太好的解決方法,所以只能猥瑣的由后端來支持掉,那么可以怎么玩?

生成圖片比較簡單

簡單的場景,可以直接用jdk來支持掉,一般來講也沒有太復(fù)雜的邏輯

之前寫過一個圖片合成的邏輯,利用awt實現(xiàn): 圖片合成

通用、復(fù)雜的模板

簡單的可以直接支持,但復(fù)雜一點的,讓后端來支持,無疑比較惡心,在github上也搜索了一些渲染html的開源庫,不知道是姿勢不對還是咋的,沒有太滿意的結(jié)果

現(xiàn)在對復(fù)雜的模板,要怎么支持呢?

也就是本篇的指南,利用phantomjs來實現(xiàn)html的渲染,支持生成pdf,生成圖片,解析dom都o(jì)k,接下來則演示下如何結(jié)合 phantomjs 搭建一個網(wǎng)頁渲染成圖片的服務(wù)

II. 前提準(zhǔn)備

1. phantom.js 安裝

# 1. 下載
## mac 系統(tǒng)
wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-macosx.zip
## linux 系統(tǒng)
wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
## windows 系統(tǒng)
## 就不要玩了,沒啥意思
# 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依賴配置

maven 配置添加依賴

<!--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>

開動

主要調(diào)用phantomjs來實現(xiàn)html渲染圖片的邏輯如下

public class Html2ImageByJsWrapper {
  private static PhantomJSDriver webDriver = getPhantomJs();
  private static PhantomJSDriver getPhantomJs() {
    //設(shè)置必要參數(shù)
    DesiredCapabilities dcaps = new DesiredCapabilities();
    //ssl證書支持
    dcaps.setCapability("acceptSslCerts", true);
    //截屏支持
    dcaps.setCapability("takesScreenshot", true);
    //css搜索支持
    dcaps.setCapability("cssSelectorsEnabled", true);
    //js支持
    dcaps.setJavascriptEnabled(true);
    //驅(qū)動支持(第二參數(shù)表明的是你的phantomjs引擎所在的路徑,which/whereis phantomjs可以查看)
    // fixme 這里寫了執(zhí)行, 可以考慮判斷系統(tǒng)是否有安裝,并獲取對應(yīng)的路徑 or 開放出來指定路徑
    dcaps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "/usr/local/bin/phantomjs");
    //創(chuàng)建無界面瀏覽器對象
    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);
  }
}

測試case

public class Base64Util {
  public static String encode(BufferedImage bufferedImage, String imgType) throws IOException {
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    ImageIO.write(bufferedImage, imgType, outputStream);
    return encode(outputStream);
  }
  public static String encode(ByteArrayOutputStream outputStream) {
    return Base64.getEncoder().encodeToString(outputStream.toByteArray());
  }
}
@Test
public void testRender() throws IOException {
  BufferedImage img = null;
  for (int i = 0; i < 20; ++i) {
    String url = "https://my.oschina.net/u/566591/blog/1580020";
    long start = System.currentTimeMillis();
    img = Html2ImageByJsWrapper.renderHtml2Image(url);
    long end = System.currentTimeMillis();
    System.out.println("cost: " + (end - start));
  }
  System.out.println(Base64Util.encode(img, "png"));
}

生成的圖片就不貼了,有興趣的可以直接到我的網(wǎng)站上實測

III. 網(wǎng)絡(luò)實測

在阿里云服務(wù)器上部署了一個簡單的web應(yīng)用,支持了html輸出圖片的功能;由于買的是乞丐版,用的前端模板又比較酷炫,所以打開較慢.

操作演示:

Java中PhantomJs如何完成html圖片輸出功能

V. 項目

項目地址:

quick-media

QuickMedia是一個專注圖文,音視頻,二維碼處理等面向多媒體服務(wù)的開源項目

關(guān)于“Java中PhantomJs如何完成html圖片輸出功能”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

文章標(biāo)題:Java中PhantomJs如何完成html圖片輸出功能
網(wǎng)站網(wǎng)址:http://www.rwnh.cn/article32/ipcisc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、網(wǎng)站收錄、網(wǎng)站營銷、網(wǎng)站排名、手機網(wǎng)站建設(shè)搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營
普陀区| 娄底市| 岱山县| 北流市| 武功县| 玉山县| 汉中市| 平果县| 健康| 剑阁县| 无为县| 濉溪县| 石柱| 金阳县| 资溪县| 临洮县| 普洱| 中方县| 历史| 沈丘县| 桃园市| 文水县| 河北省| 项城市| 葫芦岛市| 龙江县| 朝阳县| 临邑县| 年辖:市辖区| 垦利县| 年辖:市辖区| 泾川县| 通州区| 五指山市| 康平县| 河北区| 财经| 天气| 庐江县| 隆尧县| 龙南县|