激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java PhantomJs完成html圖片輸出功能

Java PhantomJs完成html圖片輸出功能

2021-03-10 14:29oschina Java教程

給大家帶來一篇關于用Java PhantomJs完成html圖片輸出功能的教學內容,有興趣的朋友學習參考下吧。

借助phantomjs來實現將html網頁輸出為圖片

i. 背景

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

生成圖片比較簡單

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

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

通用、復雜的模板

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

現在對復雜的模板,要怎么支持呢?

也就是本篇的指南,利用phantomjs來實現html的渲染,支持生成pdf,生成圖片,解析dom都ok,接下來則演示下如何結合 phantomjs 搭建一個網頁渲染成圖片的服務

ii. 前提準備

1. phantom.js 安裝

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 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依賴配置

maven 配置添加依賴

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!--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>

開動

主要調用phantomjs來實現html渲染圖片的邏輯如下

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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);
  }
}

測試case

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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"));
}

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

iii. 網絡實測

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

操作演示:

Java PhantomJs完成html圖片輸出功能

v. 項目

項目地址:

quick-media

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

以上代碼經過我們的測試,大家如果還有不明白可需要討論的可以在下方留言,感謝你對服務器之家的支持。

原文鏈接:https://my.oschina.net/u/566591/blog/1584114

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲人成网站在e线播放 | 日本不卡一区二区三区在线观看 | 国产黄色网 | 在线播放免费播放av片 | 国产黄色网页 | 狠狠操人人干 | 免费欧美一级视频 | 亚洲一区二区免费视频 | 欧美在线观看视频网站 | 91av在线免费观看 | 中文字幕亚洲视频 | 国产成人午夜高潮毛片 | xp123精品视频 | 黄色特级| 久久久久久久久久久久久久久久久久 | 永久免费黄色大片 | 九九热精品视频在线 | 久久免费视频7 | 精品亚洲夜色av98在线观看 | 成人毛片网 | 成人在线观看免费爱爱 | 久久国产精品网 | 中文字幕一区在线观看视频 | 中文在线观看www | 色阁阁69婷婷 | 亚洲午夜精品视频 | 欧美一级成人 | 精品一区二区免费视频视频 | 草莓视频在线导航 | 国产成人精品区一区二区不卡 | 黄色片在线观看网站 | 最新中文在线视频 | 九九黄色 | 成人国产精品齐天大性 | 得得啪在线视频 | 九九热精品视频在线播放 | 欧美淫| 亚洲午夜在线观看 | 欧美日韩精品一区二区三区蜜桃 | 99国内精品视频 | 能直接看av的网站 |