Advertisement
Guest User

Untitled

a guest
Jul 4th, 2015
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.55 KB | None | 0 0
  1. // instructions
  2. // drag n drop an image onto the pink canvas --->
  3. //
  4. // @johnnyscript
  5.  
  6. var surfaceNets = require("surface-nets")
  7. var ndarray = require("ndarray")
  8. var fill = require("ndarray-fill")
  9. var drop = require('drag-drop')
  10.  
  11. var canvas = document.createElement('canvas')
  12. canvas.style.height = '480px'
  13. canvas.style.width = '640px'
  14. canvas.style.background = 'pink'
  15. document.body.appendChild(canvas)
  16.  
  17. var QUANTASTICALLY = 3
  18.  
  19. function process (r) {
  20. var w = r
  21. q = quantize(QUANTASTICALLY)
  22. for (var i = 0; i < w.data.length; i += 4) {
  23. var v = q([r.data[i], r.data[i+1], r.data[i+2]])
  24. w.data[i] = v;
  25. w.data[i+1] = v;
  26. w.data[i+2] = v;
  27. w.data[i+3] = 255;
  28. }
  29. }
  30.  
  31. drop(canvas, function(files){
  32. var reader = new FileReader
  33. var ctx = canvas.getContext('2d')
  34. reader.onloadend = function(){
  35. var image = new Image
  36. image.src = reader.result
  37. image.onload = function(){
  38. var h = image.height
  39. var w = image.width
  40. canvas.width = w
  41. canvas.height = h
  42. canvas.style.width = w + 'px'
  43. canvas.style.height = h + 'px'
  44. ctx.drawImage(image, 0, 0, w, h)
  45. var dat = ctx.getImageData(0, 0, w, h)
  46. process(dat)
  47. ctx.putImageData(dat, 0, 0, 0, 0, w, h)
  48. }
  49. }
  50. reader.readAsDataURL(files[0])
  51. })
  52.  
  53.  
  54. function quantize(x){
  55. var z = 255 * 3
  56. var q = z / x
  57. return function(pixels){
  58. var totes = pixels.reduce(function(a, e){
  59. return a + e
  60. },0)
  61. return Math.floor(totes / q) * q
  62. }
  63. }
  64.  
  65. function quantizeColor(x){
  66. var z = 255
  67. var q = z / x
  68. return function(v){
  69. return Math.floor(v / q) * q
  70. }
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement