成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

基于node-canvas 和 express 的一款圖片格式轉(zhuǎn)換工具

zhoutk / 483人閱讀

摘要:基于和的一款圖片格式轉(zhuǎn)換工具完善后會(huì)發(fā)布成由于本項(xiàng)目當(dāng)前是,還有很多不足支出,希望大家能指正,共勉。中請(qǐng)求發(fā)送必須使用發(fā)送數(shù)據(jù)并且在啟動(dòng)之前需要對(duì)做處理,使用做處理并且設(shè)置中的為這樣后端才能正常接收并解析請(qǐng)求中所攜帶的數(shù)據(jù)。

基于node-canvas 和 express 的一款圖片格式轉(zhuǎn)換工具,完善后會(huì)發(fā)布成npm

由于本項(xiàng)目當(dāng)前是[email protected],還有很多不足支出,希望大家能指正,共勉。

這是我最近幾天在學(xué)Node的時(shí)候想著做的一個(gè)工具,為什么做這個(gè)?

原因有三點(diǎn):

1.雖然前端可以使用 Canvas 進(jìn)行操作,但是畢竟功能有限,并且,國(guó)內(nèi)的環(huán)境,如果這個(gè)功能在前端完全開發(fā),那么對(duì)于兼容低版本的瀏覽器將是痛苦不堪,所以構(gòu)想直接在后端對(duì)圖片進(jìn)行處理,進(jìn)而避免兼容性等問題。

2.Node強(qiáng)大的異步IO機(jī)制使得對(duì)大文件操作也不會(huì)怕頁(yè)面阻塞,直接由Ajax發(fā)送請(qǐng)求,等待后臺(tái)處理完響應(yīng)后直接接收?qǐng)D片即可,并且?guī)啄昵耙灿写笈i_發(fā)出基于C++的node-canvas的模塊,并且一直也有很好的維護(hù),也為在后端使用Canvas進(jìn)行功能開發(fā)提供了可能,也降低了圖片處理方面的難度。

3.極大降低前端對(duì)此需求的使用難度,只需對(duì)照READEME理解后,使用Ajax發(fā)送相應(yīng)參數(shù)即可,無(wú)需去研究node-canvas的使用.

4.node-canvas的使用經(jīng)驗(yàn)搜索過,只有少量使用介紹,有必要結(jié)合此工具做完善拓展,使其能夠直接使用,繞過node-canvas這個(gè)安裝也不方便的坑。

Github Address

題主是一枚準(zhǔn)大三狗(雖然資質(zhì)平平,但是初期寫這個(gè)還是仔細(xì)看了node-canvas的READEME的才寫的),此項(xiàng)目準(zhǔn)備長(zhǎng)期維護(hù),直至功能完全完善,有興趣使用的歡迎指正的關(guān)注,因?yàn)橐彩且恢痹诿髦斑M(jìn),希望有志同道合的伙伴一起前進(jìn),坐標(biāo)的話,估計(jì)你早就看見了。

老規(guī)矩: 歡迎Star(小編原諒我的表臉,逃)

項(xiàng)目Github地址
$ https://github.com/ZJH9Rondo/...

node-canvas項(xiàng)目地址
$ https://github.com/Automattic...

Install

執(zhí)行 npm install 前,先安裝依賴,由于 node-canvas 是C++寫的,并且,其中涉及到在后端Node中直接對(duì)css等進(jìn)行設(shè)置,所以不僅需要當(dāng)前的 OS 可以對(duì)node-canvas的項(xiàng)目文件進(jìn)行編譯,還需要工作期間操作Canvas實(shí)例的依賴,所以安裝期間可能會(huì)或多或少的遇到問題,以下是操作流程(結(jié)合了node-canvas的READEME和編寫代碼期間遇到的問題)

根據(jù)當(dāng)前的OS在Install前在終端執(zhí)行響應(yīng)命令,安裝對(duì)應(yīng)包或依賴,必須成功后才可執(zhí)行后續(xù)操作,否則安裝后項(xiàng)目也無(wú)法正常運(yùn)行。

OS Command
OS X brew install pkg-config cairo pango libpng jpeg giflib
Ubuntu sudo apt-get install libcairo2-dev libjpeg8-dev libpango1.0-dev libgif-dev build-essential g++
Fedora sudo yum install cairo cairo-devel cairomm-devel libjpeg-turbo-devel pango pango-devel pangomm pangomm-devel giflib-devel
Solaris pkgin install cairo pango pkg-config xproto renderproto kbproto xextproto
Windows Instructions on our wiki

執(zhí)行上述操作成功之后即可安裝項(xiàng)目

獲取源碼包:

$ git clone [email protected]:ZJH9Rondo/Img-trans.git

安裝Package.json對(duì)應(yīng)依賴:

$ sudo npm install

提醒一點(diǎn): 如果當(dāng)前用戶是將 npm 更新至@5.0 版本,執(zhí)行 sudo npm install 會(huì)在當(dāng)前平行目錄生成 Package-lock.json 文件,這個(gè)是 npm 新版本加入的特征(規(guī)范),不影響正常使用,具體規(guī)范說明有需要可以看如下來自Stackoverflow的解釋。

How to use

前端用ajax發(fā)送數(shù)據(jù),后端接收后對(duì)對(duì)應(yīng)圖片進(jìn)行處理,之后響應(yīng)返回為一個(gè)轉(zhuǎn)換后圖片的url

上述基本說明有一點(diǎn)有必要說明,當(dāng)前的基礎(chǔ)版本暫時(shí)沒有加入上傳文件進(jìn)行轉(zhuǎn)換的需求,開發(fā)構(gòu)想基本使用場(chǎng)景是 個(gè)人網(wǎng)站或圖片格式轉(zhuǎn)換功能開發(fā)中,當(dāng)前站點(diǎn)的對(duì)圖片格式轉(zhuǎn)換的簡(jiǎn)單功能需求,所以直接是通過 url 讀取站點(diǎn)的圖片文件進(jìn)行轉(zhuǎn)換操作,后續(xù)會(huì)加入文件上傳處理。

Ajax的參數(shù)說明

PNG SVG JPEG的參數(shù)說明(以 PNG 為例):

由于測(cè)試是用本地自己封裝的一個(gè)Ajax測(cè)試的,所以格式可能會(huì)有點(diǎn)差別

var data = {

"source": src,      // 需轉(zhuǎn)換圖片的

"name": "test.png"  // 生成圖片的文件名

"width": 794,      // Canvas的width

"height": 1123,    // Canvas的height

"outUrl": "./image/newImg/",  // 生成轉(zhuǎn)換文件的存放路徑

"type": "png"     // 文件轉(zhuǎn)換格式

};

其中, src 建議使用相對(duì)路徑,其值的獲取可以自由輸入,也可以通過js獲取,但是在獲取的時(shí)候建議使用 getAttribute() 獲取,而非 img.src 。

PDF 的問題需要仔細(xì)說明,如下:

示例圖為本地生成一標(biāo)準(zhǔn)A4紙大小的PDF圖片,截取了上半部作為示例

PDF轉(zhuǎn)換存在POST發(fā)送請(qǐng)求數(shù)據(jù),需要使用body-parser處理url,在package.json中已寫入

var data = {

"source": src,

"width": 794,

"height": 1123,

"h1": "This is a PDF",

"p": "It be made node-canvas,It be made node-canvas,It be made node-canvas,It be made node-canvas",

"name": "test.pdf",

"outUrl": "./image/newImg/",

"type": "pdf"

};

PDF參數(shù)說明

h1: 當(dāng)前PDF的內(nèi)容標(biāo)題設(shè)置

p: 當(dāng)前PDF的文本內(nèi)容文本,但是當(dāng)前由于node-canvas的 p 函數(shù)解析對(duì)于過長(zhǎng)的文本沒有自動(dòng)換行的處理,當(dāng)前版本的后續(xù)更新會(huì)對(duì)此在后臺(tái)通

過js做處理。

其余與上相同,又去當(dāng)前開發(fā)的只是返回了Url,所以具體生成的文件除PDF外都能在測(cè)試時(shí)直接使用返回的URL看到效果,后續(xù)的開發(fā)功能會(huì)及時(shí)更新添加,目前使用對(duì)于圖片格式轉(zhuǎn)換沒有問題。

PDF中 Ajax 請(qǐng)求發(fā)送必須使用 POST 發(fā)送數(shù)據(jù),并且在啟動(dòng)Ajax之前需要對(duì)data做處理,使用 JSON.stringify() 做處理,并且設(shè)置 Request Headers 中的 Content-Type 為 application/json ,這樣后端才能正常接收并解析請(qǐng)求中Url所攜帶的數(shù)據(jù)。

index.html 為我在本地的簡(jiǎn)單測(cè)試文件,初期功能簡(jiǎn)單,后續(xù)會(huì)使用測(cè)試腳本測(cè)試覆蓋率

后續(xù)功能開發(fā)

PDF的text長(zhǎng)文本裁剪轉(zhuǎn)換

PDF返回文件支持下載

PDF多文本轉(zhuǎn)換

Canvas轉(zhuǎn)換后清晰度下降問題

近期會(huì)寫幾篇做這個(gè)東西所涉及的一些知識(shí)點(diǎn)總結(jié)(主要是關(guān)于 Node 和 HTTP 以及 Git的問題處理以及協(xié)同開發(fā),此部分需求因人而異,有需要的可以關(guān)注,互相學(xué)習(xí))

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/84154.html

相關(guān)文章

  • 2017-07-20 前端日?qǐng)?bào)

    摘要:前端日?qǐng)?bào)精選入門指南工作原理的新功能前端本地存儲(chǔ)數(shù)據(jù)庫(kù)實(shí)例教程模塊深入探究調(diào)查問卷中文譯掘金第期構(gòu)建高性能展開收縮動(dòng)畫譯代碼檢查工具對(duì)比前端之旅譯年了,這么多前端框架,你會(huì)怎樣選擇掘金譯不配置,不出事那些坑其一前端面試的大 2017-07-20 前端日?qǐng)?bào) 精選 CSS入門指南-1:工作原理2017 Amsterdam CSS DayWebpack 3 的新功能:Scope Hoisti...

    JessYanCoding 評(píng)論0 收藏0
  • GitHub 值得收藏的前端項(xiàng)目[每月更新...]

    摘要:也是一款優(yōu)秀的響應(yīng)式框架站點(diǎn)所使用的一套框架為微信服務(wù)量身設(shè)計(jì)的一套框架一組很小的,響應(yīng)式的組件,你可以在網(wǎng)頁(yè)的項(xiàng)目上到處使用一個(gè)可定制的文件,使瀏覽器呈現(xiàn)的所有元素,更一致和符合現(xiàn)代標(biāo)準(zhǔn)。 GitHub 值得收藏的前端項(xiàng)目 整理與收集的一些比較優(yōu)秀github項(xiàng)目,方便自己閱讀,順便分享出來,大家一起學(xué)習(xí),本篇文章會(huì)持續(xù)更新,版權(quán)歸原作者所有。歡迎github star與fork 預(yù)...

    maxmin 評(píng)論0 收藏0
  • 前端資源分享-只為更好前端

    摘要:一團(tuán)隊(duì)組織網(wǎng)站說明騰訊團(tuán)隊(duì)騰訊前端團(tuán)隊(duì),代表作品,致力于前端技術(shù)的研究騰訊社交用戶體驗(yàn)設(shè)計(jì),簡(jiǎn)稱,騰訊設(shè)計(jì)團(tuán)隊(duì)網(wǎng)站騰訊用戶研究與體驗(yàn)設(shè)計(jì)部百度前端研發(fā)部出品淘寶前端團(tuán)隊(duì)用技術(shù)為體驗(yàn)提供無(wú)限可能凹凸實(shí)驗(yàn)室京東用戶體驗(yàn)設(shè)計(jì)部出品奇舞團(tuán)奇虎旗下前 一、團(tuán)隊(duì)組織 網(wǎng)站 說明 騰訊 AlloyTeam 團(tuán)隊(duì) 騰訊Web前端團(tuán)隊(duì),代表作品WebQQ,致力于前端技術(shù)的研究 ISUX 騰...

    zxhaaa 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<