Advertisement
adawin

Untitled

Jan 29th, 2020
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.70 KB | None | 0 0
  1. window.onload = function(){
  2. var img = new Image();
  3.  
  4. var canvas = document.getElementById("canvas");
  5. var ctx = canvas.getContext("2d");
  6.  
  7. //Ładowanie obrazka
  8. img.src = "img/image.png";
  9. img.onload = function() {
  10. ctx.drawImage(img, 0,0);
  11. }
  12.  
  13. var red = document.getElementById("r-color-range");
  14. var green = document.getElementById("g-color-range");
  15. var blue = document.getElementById("b-color-range");
  16. var brightness = document.getElementById("brightness-range");
  17. var contrast = document.getElementById("contrast-range");
  18. var invert = document.getElementById("invert-range");
  19. var gray = document.getElementById("gray-range");
  20.  
  21.  
  22. // Zmiana koloru czerwonego
  23. red.oninput = function() {
  24. ctx.drawImage(img, 0,0);
  25. imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
  26. for (var i = 0; i < imageData.data.length; i += 4) {
  27. imageData.data[i] += parseInt(red.value);
  28. }
  29. ctx.putImageData(imageData, 0, 0);
  30. }
  31.  
  32. // Zmiana koloru zielonego
  33. green.oninput = function() {
  34. ctx.drawImage(img, 0,0);
  35. imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
  36. for (var i = 0; i < imageData.data.length; i += 4) {
  37. imageData.data[i+1] += parseInt(green.value);
  38. }
  39. ctx.putImageData(imageData, 0, 0);
  40. }
  41.  
  42. // Zmiana koloru niebieskiego
  43. blue.oninput = function() {
  44. ctx.drawImage(img, 0,0);
  45. imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
  46. for (var i = 0; i < imageData.data.length; i += 4) {
  47. imageData.data[i+2] += parseInt(blue.value);
  48. }
  49. ctx.putImageData(imageData, 0, 0);
  50. }
  51.  
  52. // Zmiana jasności
  53. brightness.oninput = function() {
  54. ctx.drawImage(img, 0,0);
  55. imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
  56. for (var i = 0; i < imageData.data.length; i+= 4) {
  57. imageData.data[i] += 255 * (parseInt(brightness.value) / 100);
  58. imageData.data[i+1] += 255 * (parseInt(brightness.value) / 100);
  59. imageData.data[i+2] += 255 * (parseInt(brightness.value) / 100);
  60. }
  61. ctx.putImageData(imageData, 0, 0);
  62. }
  63.  
  64. // Kontrast
  65. function truncateColor(value) {
  66. if (value < 0) {
  67. value = 0;
  68. } else if (value > 255) {
  69. value = 255;
  70. }
  71.  
  72. return value;
  73. }
  74. contrast.oninput = function() {
  75. var factor = (259.0 * (parseInt(contrast.value) + 255.0)) / (255.0 * (259.0 - parseInt(contrast.value)));
  76.  
  77. ctx.drawImage(img, 0,0);
  78. imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
  79. for (var i = 0; i < imageData.data.length; i+= 4) {
  80. imageData.data[i] = truncateColor(factor * (imageData.data[i] - 128.0) + 128.0);
  81. imageData.data[i+1] = truncateColor(factor * (imageData.data[i+1] - 128.0) + 128.0);
  82. imageData.data[i+2] = truncateColor(factor * (imageData.data[i+2] - 128.0) + 128.0);
  83. }
  84. ctx.putImageData(imageData, 0, 0);
  85. }
  86.  
  87. // OdwrĂłcenie kolorĂłw
  88.  
  89. invert.oninput = function() {
  90. imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
  91. for (var i = 0; i < imageData.data.length; i+= 4) {
  92. imageData.data[i] = imageData.data[i] ^ 255;
  93. imageData.data[i+1] = imageData.data[i+1] ^ 255;
  94. imageData.data[i+2] = imageData.data[i+2] ^ 255;
  95. }
  96. ctx.putImageData(imageData, 0, 0);
  97. }
  98.  
  99. // Skala szarości
  100. gray.oninput = function() {
  101. if(gray.checked == false){
  102. ctx.drawImage(img, 0,0);
  103. imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
  104. }
  105. else{
  106. imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
  107. for (var i = 0; i < imageData.data.length; i += 4) {
  108. var avg = (imageData.data[i] + imageData.data[i + 1] + imageData.data[i + 2]) / 3;
  109. imageData.data[i] = avg;
  110. imageData.data[i + 1] = avg;
  111. imageData.data[i + 2] = avg;
  112. }
  113. }
  114. ctx.putImageData(imageData, 0, 0);
  115.  
  116. }
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement