Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <html>
- <head>
- <title>Pic converter</title>
- </head>
- <body>
- <input type="file" id="fileField"/><br><br>
- Output:<br>
- <textarea id="output" cols="60" rows="20">
- Select a file and it'll be converted to 1-bit Metalvotz bidir raster format.
- Only red channel is used; if red==0, pixel is black, otherwise pixel is white.
- NOTE: Image must be max 224 pix wide (it'll be padded if smaller)
- </textarea><br><br>
- Image preview:<br>
- <canvas id="canvas" width="224" height="500"></canvas>
- <script>
- var HARD_WIDTH = 224;
- function handleFileSelect(e) {
- var canvas = document.getElementById('canvas'),
- ctx = canvas.getContext('2d'),
- img = new Image(),
- src = (window.URL ? URL : webkitURL).createObjectURL(e.target.files[0]);
- img.src=src;
- img.onload = function() {
- var width=img.width,
- height=img.height;
- if (width>HARD_WIDTH){
- alert("Images must be max 224 pix wide!");
- return;
- }
- canvas.height = height;
- ctx.beginPath();
- ctx.rect(0, 0, HARD_WIDTH, height);
- ctx.fill();
- ctx.drawImage(img,0,0);
- var data = ctx.getImageData(0,0,HARD_WIDTH,height).data;
- var res="img_data_size\tequ\t"+(HARD_WIDTH/8)+"*"+height+"\t; ("+HARD_WIDTH+"x"+height+" pixels)\nimg_data:\n";
- for(var y=0; y<height; y++) {
- var forward=(y%2==0);
- res+=forward?
- "\t; Forward bit order! Row "+(y+1)+"\n":
- "\t; Reverse bit order! Row "+(y+1)+"\n";
- for(var x=0; x<HARD_WIDTH; x+=8) {
- var byteval=0;
- var bitval=forward?128:1;
- for (var i=0; i<8; i++){
- if (data[((HARD_WIDTH * y) + x + i) * 4] > 0)
- byteval += bitval;
- bitval = forward?bitval>>1:bitval<<1;
- }
- byteval = decbin(byteval,8);
- res += "\tdb %"+byteval+"\n";
- }
- }
- document.getElementById('output').innerHTML = res;
- };
- }
- function decbin(dec,length){
- var out = "";
- while(length--)
- out += (dec >> length ) & 1;
- return out;
- }
- document.getElementById('fileField').addEventListener('change', handleFileSelect, false);
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement