Advertisement
Guest User

Untitled

a guest
Oct 26th, 2016
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.71 KB | None | 0 0
  1. // Callback function called, when file is "opened"
  2. function handleFileSelect(item) {
  3. var files = item.files;
  4.  
  5. console.log(files);
  6.  
  7. for (var i = 0; i < files.length; i++) {
  8. console.log(files[i], files[i].name, files[i].size, files[i].type);
  9.  
  10. // Only process image files.
  11. if (!files[i].type.match('image.*')) {
  12. continue;
  13. }
  14.  
  15. var reader = new FileReader();
  16.  
  17. // Closure for loading image to memory
  18. reader.onload = (function(file) {
  19. return function(evt) {
  20.  
  21. var srcImg = new Image();
  22. srcImg.src = evt.target.result;
  23.  
  24. srcImg.onload = function() {
  25. var srcCanvas = document.getElementById("src");
  26. var srcContext = srcCanvas.getContext("2d");
  27. var histCanvas = document.getElementById("histogram");
  28. var histContext = histCanvas.getContext("2d");
  29.  
  30. // Change size of canvas
  31. srcCanvas.height = srcImg.height;
  32. srcCanvas.width = srcImg.width;
  33. histCanvas.width = 256;
  34. histCanvas.height = 256;
  35.  
  36. srcContext.drawImage(srcImg, 0, 0);
  37.  
  38. var canvasHeight = srcCanvas.height;
  39. var canvasWidth = srcCanvas.width;
  40. var srcImageData = srcContext.getImageData(0, 0, canvasWidth, canvasHeight);
  41.  
  42. var histHeight = histCanvas.height;
  43. var histWidth = histCanvas.width;
  44.  
  45.  
  46. convertImageData(srcImageData, histContext);
  47. }
  48. }
  49. })(files[i]);
  50.  
  51. reader.readAsDataURL(files[i]);
  52.  
  53. break;
  54. };
  55. };
  56.  
  57. function array256(default_value) {
  58. arr = [];
  59. for (var i=0; i<256; i++) { arr[i] = default_value; }
  60. return arr;
  61. }
  62.  
  63. function jasArray(red, green, blue) {
  64. arr = [];
  65.  
  66. for (var i=0; i<256; i++) {
  67. arr[i] = 0.299*red[i] + 0.587*green[i] + 0.114*blue[i];
  68. }
  69.  
  70. return arr;
  71. }
  72.  
  73. function histobars(max, vals, color, y, ctx) {
  74. ctx.fillStyle = color;
  75.  
  76. for(var i = 0; i<vals.length; i++){
  77. var pct = (vals[i] / max) * 100;
  78. ctx.fillRect(i, y, 1, -Math.round(pct));
  79. }
  80. }
  81.  
  82. // Function for converting raw data of image
  83. function convertImageData(srcImageData, histContext) {
  84. var srcData = srcImageData.data;
  85. var ctx = histContext;
  86. var red, green, blue;
  87.  
  88. var redVal = array256(0);
  89. var greenVal = array256(0);
  90. var blueVal = array256(0);
  91.  
  92.  
  93. // Go through the image using x,y coordinates
  94. for (var pixelIndex = 0; pixelIndex < srcData.length; pixelIndex += 4) {
  95. red = srcData[pixelIndex + 0];
  96. green = srcData[pixelIndex + 1];
  97. blue = srcData[pixelIndex + 2];
  98. alpha = srcData[pixelIndex + 3];
  99.  
  100. redVal[red]++;
  101. greenVal[green]++;
  102. blueVal[blue]++;
  103.  
  104. if (pixelIndex < 100) {
  105. console.log(red, green, blue, alpha);
  106. }
  107. }
  108. var jas = jasArray(redVal, greenVal, blueVal);
  109. var jasMax = Math.max.apply(null, jas);
  110. histobars(jasMax, jas, "rgb(0,0,0)", 256, ctx);
  111. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement