このプロジェクトを引き受けたとき、写真加工で白黒やセピアなどのフィルターを作るのはとても難しいと思いました。すべてはもっと簡単です!
以下に、画像をピクセルスペクトルに分解し、写真を処理するための興味深いアルゴリズムを示します。
<h1>Filter Fun</h1> <script src="https://www.dukelearntoprogram.com/course1/common/js/image/SimpleImage.js"> </script> <canvas> <p>I'm hinting at something like this (naturally, any file):<br> <img src="https://img.php.cn/upload/article/000/000/000/173352709543373.jpg" alt="Filtration isn"></p> <p>It is better to align even the simplest design. You will get the hang of big projects faster.<br> </p> <pre class="brush:php;toolbar:false">h1 { font-size: 22pt; font-family: Arial; color: #008B8B; } body { background-color: #F5F5DC; } p { font-size: 16pt; } canvas { width: 400px; background-color: #ADD8E6; border: 2px solid #A9A9A9; } input { font-size: 12pt; }
アルゴリズムの本質は次のとおりです:
var imgFile; var image = null; var imageGray = null; var imageRed = null; var imageRainbow = null; var canvas = null; function loadImage(){ canvas = document.getElementById("can"); imgFile = document.getElementById("file"); image = new SimpleImage(imgFile); imageGray = new SimpleImage(imgFile); imageRed = new SimpleImage(imgFile); imageRainbow = new SimpleImage(imgFile); image.drawTo(canvas); } function imageIsLoaded(img) { if (img==null || !img.complete()) { alert("Image not loaded"); return false; } else { return true; } } function doGray(){ if (imageIsLoaded(image)) { for (var pixel of imageGray.values()) { var arg = (pixel.getRed() + pixel.getGreen() + pixel.getBlue())/3; pixel.setRed(arg); pixel.setGreen(arg); pixel.setBlue(arg); } imageGray.drawTo(canvas); } } function doRed(){ if (imageIsLoaded(image)) { for (var pixel of imageRed.values()) { var arg = (pixel.getRed() + pixel.getGreen() + pixel.getBlue())/3; if (arg < 128) { pixel.setRed(arg*2); pixel.setGreen(0); pixel.setBlue(0); } else { pixel.setRed(255); pixel.setGreen(arg*2-255); pixel.setBlue(arg*2-255); } } imageRed.drawTo(canvas); } } function doRainbow(){ if (imageIsLoaded(image)) { imageRainbow.drawTo(canvas); } } function Reset(){ image = new SimpleImage(imgFile); imageGray = new SimpleImage(imgFile); imageRed = new SimpleImage(imgFile); imageRainbow = new SimpleImage(imgFile); image.drawTo(canvas); }
単純なアルゴリズムに見えますが、画像のピクセルとカラーパレットに応じた処理を理解するのに役立ちます。注目に値すると思います!
以上が濾過は最も難しい部分ではありませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。