Advertisement
Guest User

Metalvotz image converter

a guest
Sep 12th, 2016
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 5 2.11 KB | None | 0 0
  1. <html>
  2. <head>
  3. <title>Pic converter</title>
  4. </head>
  5. <body>
  6.     <input type="file" id="fileField"/><br><br>
  7.     Output:<br>
  8.     <textarea id="output" cols="60" rows="20">
  9. Select a file and it'll be converted to 1-bit Metalvotz bidir raster format.
  10.  
  11. Only red channel is used; if red==0, pixel is black, otherwise pixel is white.
  12.  
  13. NOTE: Image must be max 224 pix wide (it'll be padded if smaller)
  14.     </textarea><br><br>
  15.     Image preview:<br>
  16.     <canvas id="canvas" width="224" height="500"></canvas>
  17.     <script>
  18.         var HARD_WIDTH = 224;
  19.        
  20.         function handleFileSelect(e) {
  21.             var canvas = document.getElementById('canvas'),
  22.                 ctx = canvas.getContext('2d'),
  23.                 img = new Image(),
  24.                 src = (window.URL ? URL : webkitURL).createObjectURL(e.target.files[0]);
  25.                
  26.             img.src=src;
  27.             img.onload = function() {
  28.                 var width=img.width,
  29.                     height=img.height;
  30.                    
  31.                 if (width>HARD_WIDTH){
  32.                     alert("Images must be max 224 pix wide!");
  33.                     return;
  34.                 }
  35.                            
  36.                 canvas.height = height;
  37.                 ctx.beginPath();
  38.                 ctx.rect(0, 0, HARD_WIDTH, height);
  39.                 ctx.fill();
  40.                 ctx.drawImage(img,0,0);
  41.                 var data = ctx.getImageData(0,0,HARD_WIDTH,height).data;
  42.                
  43.                 var res="img_data_size\tequ\t"+(HARD_WIDTH/8)+"*"+height+"\t; ("+HARD_WIDTH+"x"+height+" pixels)\nimg_data:\n";
  44.                 for(var y=0; y<height; y++) {
  45.                     var forward=(y%2==0);
  46.                     res+=forward?
  47.                         "\t; Forward bit order! Row "+(y+1)+"\n":
  48.                         "\t; Reverse bit order! Row "+(y+1)+"\n";
  49.                        
  50.                     for(var x=0; x<HARD_WIDTH; x+=8) {
  51.                         var byteval=0;
  52.                         var bitval=forward?128:1;
  53.                         for (var i=0; i<8; i++){
  54.                             if (data[((HARD_WIDTH * y) + x + i) * 4] > 0)
  55.                                 byteval += bitval;
  56.                             bitval = forward?bitval>>1:bitval<<1;
  57.                         }
  58.                         byteval = decbin(byteval,8);                   
  59.                         res += "\tdb %"+byteval+"\n";
  60.                     }
  61.                 }
  62.                 document.getElementById('output').innerHTML = res;
  63.             };
  64.         }
  65.         function decbin(dec,length){
  66.             var out = "";
  67.             while(length--)
  68.                 out += (dec >> length ) & 1;
  69.             return out;  
  70.         }
  71.         document.getElementById('fileField').addEventListener('change', handleFileSelect, false);
  72.     </script>
  73. </body>
  74. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement