lz4
Version:
LZ4 streaming compression and decompression
61 lines (55 loc) • 1.87 kB
HTML
<html>
<head>
<title>LZ4 compress</title>
</head>
<body>
<script type="text/javascript" src="../build/lz4.js"></script>
<script type="text/javascript">
var LZ4 = require('lz4')
function encodeBlock () {
var Buffer = require('buffer').Buffer
var str = document.getElementById('input').value
var input = Buffer.from(str)
var maxOutputSize = LZ4.encodeBound(input.length)
var output = Buffer.alloc(maxOutputSize)
console.debug("maxOutputSize", maxOutputSize)
var startTime = Date.now()
var outputSize = LZ4.encodeBlock( input, output )
var endTime = Date.now()
console.log("encoded in " + (endTime-startTime) + "ms")
if (outputSize > 0) {
// Resize according to the compressed size
output = output.slice(0, outputSize)
console.debug("output", output)
var outputB64 = btoa( encodeURIComponent(output) )
document.getElementById('output').value = outputB64
document.getElementById('inputSize').innerHTML = "Size: " + str.length
document.getElementById('outputSize').innerHTML = "Buffer size: " + output.length + "<br> B64 size: " + outputB64.length
} else {
document.getElementById('output').value = str
document.getElementById('inputSize').innerHTML = "Size: " + str.length
document.getElementById('outputSize').innerHTML = "<b>not compressible</b>"
}
}
</script>
<div id="version"></div>
<div>
<label>Input data</label>
<div id="inputSize"></div>
<p>
<textarea id="input" rows="5" cols="50"></textarea>
</p>
<button id="encode" onclick="encodeBlock()">Encode</button>
</div>
<div>
<label>Compressed data</label>
<div id="outputSize"></div>
<p>
<textarea id="output" rows="5" cols="50"></textarea>
</p>
</div>
<script type="text/javascript">
document.getElementById('version').innerHTML = "Version: " + LZ4.version
</script>
</body>
</html>