2014-09-06 51 views
1

我使用three.js庫的PLYLoader以.ply格式加載點雲,文件大小約爲8-10MB,似乎它不使用gzip,因此它加載了所有10MB的數據。如何強制使用gzip與three.js的PLYLoader?

我不知道是否有可能使用gzip進行文件傳輸,因爲手動壓縮.ply pointcloud我將大小減小到2-3MB。

+0

你怎麼知道它做的esn't使用gzip?聽起來像是關於託管.ply文件的服務器配置問題,而不是three.js問題。它是什麼樣的服務器? – Volune 2014-09-06 10:21:07

+0

@Volune我正在使用默認配置的Tomcat 8。我檢查它是否使用gzip查看Chrome開發人員工具的「網絡」選項卡,比較文件大小和下載大小。 – lukasged 2014-09-06 12:55:41

+0

使用網絡選項卡,您可以檢查請求頭「Accept-Encoding」是否包含'gzip',並向我們顯示請求和響應頭? (不需要發佈主機和cookie頭)(只是爲了確保它是客戶端還是服務器端問題) – Volune 2014-09-06 13:35:04

回答

2

我已經使用PAKO的是,JavaScript的一個非常快的zlib庫:

https://github.com/nodeca/pako

工作原理是這樣的gzip壓縮:

var deflate=new pako.Deflate({gzip:true}); 
deflate.push(data,true); 
var ndatagzBlob = new Blob([deflate.result]); 

像這樣的ungzipping(它會找到該數據是從頭部gzip):

var inflate=new pako.Inflate(); 
inflate.push(new Uint8Array(this.response),true); 
var data=inflate.result.buffer;