БлогNot. Javascript: преобразуем цветную картинку к оттенкам серого (Grayscale)

Javascript: преобразуем цветную картинку к оттенкам серого (Grayscale)

Побочный продукт другой работы, выложу, чтобы не пропадал. Сервис позволяет загрузить графический файл из файловой системы компьютера и преобразовать его к серому (Grayscale) изображению. Любой современный браузер позволяет сохранить преобразованный файл, щёлкнув на нём правой кнопкой мыши и выбрав пункт меню "Сохранить картинку как...", "Сохранить изображение как..." и т. п. (название пункта зависит от браузера).

Файл сервиса в работе и исходник без обрамления HTML (на момент написания) показаны далее, исходник можно вставить в документ .html в нужной кодировке.

 Преобразование рисунка в оттенки серого онлайн, откройте ссылку в новом окне (вкладке)

<div align="center">
 <form method="post" enctype="multipart/form-data">
   <p>Рисунок: <input type="file" id="file1">
   <input type="button" id="button1" value="Обработать">
   </p>
 </form>
 <canvas id="imgCanvas1" width="600" height="600" style="background-color: #999999;">
  Извините, канва недоступна в вашем браузере
 </canvas>

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
 <script type="text/javascript">
  var img1;
  var canvas1;
  var ctx1;
  var loaded1 = false;
  var img1_width, img1_height;

  function grayscaleImage (canvasContext,imgW,imgH) { //Преобразование канвы в GrayScale
    var imgPixels = canvasContext.getImageData(0, 0, imgW, imgH);
    for (var y = 0; y < imgPixels.height; y++){
        for(var x = 0; x < imgPixels.width; x++){
            var i = (y * 4) * imgPixels.width + x * 4;
            var avg = (imgPixels.data[i] + imgPixels.data[i + 1] + imgPixels.data[i + 2]) / 3;
            imgPixels.data[i] = avg; 
            imgPixels.data[i + 1] = avg; 
            imgPixels.data[i + 2] = avg;
        }
    }
    canvasContext.putImageData(imgPixels, 0, 0, 0, 0, imgPixels.width, imgPixels.height);
  }

  $("#file1").change (function (e) {
   var URL = window.webkitURL || window.URL;
   var url = URL.createObjectURL(e.target.files[0]);
   img1 = new Image();
   canvas1 = document.getElementById('imgCanvas1');
   img1.src = url;
   img1.onload = function() {
    canvas1.width = img1_width = img1.width; 
    canvas1.height =img1_height = img1.height;
    ctx1 = canvas1.getContext('2d');
    ctx1.fillStyle="#FFFFFF"; 
    ctx1.fillRect (0, 0, canvas1.width, canvas1.height);
    ctx1.drawImage (img1, 0, 0, img1_width, img1_height);
    loaded1 = true;
   }
  });
  $("#button1").click (function (e) {
    if (!loaded1) {
     alert ('Загрузите файл!'); return;
    }
    var grayscaleResults = grayscaleImage (ctx1, img1_width, img1_height); 
    img1.src = grayscaleResults;
  });
 </script>
 <noscript><div>Извините, требуется включённый Javascript для работы приложения!</div></noscript>
</div>

теги: javascript графика сервис

18.03.2019, 11:37; рейтинг: 191