diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2018-05-17 20:41:59 +0200 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2018-05-17 20:41:59 +0200 |
| commit | 5b1a3cf86590bb33f06adedff482fc932fb57c8b (patch) | |
| tree | d36952b83e4a5de8d1c69c53da0ba785235789a5 /client | |
| parent | 99c9ec8e78803f6b8a4b06abe625ab29ba33cc43 (diff) | |
save zip and stuff
Diffstat (limited to 'client')
| -rw-r--r-- | client/draw.js | 2 | ||||
| -rw-r--r-- | client/index.js | 28 |
2 files changed, 23 insertions, 7 deletions
diff --git a/client/draw.js b/client/draw.js index a732745..8caf8d8 100644 --- a/client/draw.js +++ b/client/draw.js @@ -239,7 +239,7 @@ function raw_spectrum(spec, x0, y0, ww, hh, def_min_r, def_min_i){ // hsl = color.hsl2rgb((_i + 1) / 2, 1.0, 1 - Math.abs(_r / 10)) pixels[u+0] = _r pixels[u+1] = _i - pixels[u+2] = 0 // hsl[2] + pixels[u+2] = 127 // hsl[2] pixels[u+3] = 255 // min_r = Math.min(min_r, col[v]) diff --git a/client/index.js b/client/index.js index 18e94da..2fc20bb 100644 --- a/client/index.js +++ b/client/index.js @@ -1,4 +1,8 @@ import Tone from 'tone' +import JSZip from 'jszip' +import { sprintf } from 'sprintf-js' +import FileSaver from 'file-saver' + import draw from './draw' import keys from './lib/keys' import mouse from './lib/mouse' @@ -76,18 +80,28 @@ function loadBuffer(){ if (! pcm) return const FRAME_LENGTH = 126 * 255 - const FRAME_OFFSET = FRAME_LENGTH + const FRAME_OFFSET = FRAME_LENGTH / 4 + + var zip = new JSZip() + + var zip_folder = zip.folder("images"); for (var offset = 0, count = 0, _len = pcm.length; offset < _len; offset += FRAME_OFFSET, count += 1) { // console.log('generating', count, offset) - let player = render(pcm.slice(offset, offset+FRAME_LENGTH)) + let player = render(pcm.slice(offset, offset+FRAME_LENGTH), count, zip_folder) register(player, count) if (count > 20) break // break } + + console.log('done exporting') + zip.generateAsync({type:"blob"}).then(function(content) { + console.log('saving zip') + FileSaver.saveAs(content, "img2pix.zip") + }); play(0) } -function render(pcm){ +function render(pcm, count, zip){ const fft = spectrum.toSpectrum(pcm, sr) // console.log('render', fft) // const pcm_rev = pcm.slice().reverse() @@ -96,6 +110,10 @@ function render(pcm){ draw.clear() const { canvas, imageData } = draw.raw_spectrum(fft, 0, 256, 0, 256, _r, _i) const dataURL = canvas.toDataURL("image/png") + if (zip) { + const fn = sprintf('frame_%05d.png', count) + zip.file(fn, dataURL.split(',')[1], {base64: true}) + } return { fft, canvas, imageData, dataURL } } function play(i) { @@ -107,7 +125,6 @@ function play(i) { const { canvas, imageData } = draw.raw_spectrum(player.fft, 0, 256, 0, 256, _r, _i) const new_fft = spectrum.fromImageData(player.imageData, 44100, _r, _i) gallery.innerHTML = '' - gallery.appendChild(canvas) // console.log(player.fft.data, new_fft.data) const buf = spectrum.fromSpectrum(new_fft) @@ -118,7 +135,6 @@ function play(i) { } function redraw(new_fft){ const { canvas, imageData } = draw.raw_spectrum(new_fft, 0, 256, 0, 256, _r, _i) - gallery.appendChild(canvas) } function register(player, i){ // console.log('register', player) @@ -126,6 +142,6 @@ function register(player, i){ player.canvas.addEventListener('click', () => { play(i) }) - // gallery.appendChild(player.canvas) + gallery.appendChild(player.canvas) } init() |
