Maison > interface Web > tutoriel CSS > La filtration n'est pas la partie la plus difficile

La filtration n'est pas la partie la plus difficile

Linda Hamilton
Libérer: 2024-12-07 07:18:12
original
725 Les gens l'ont consulté

Quand j'ai commencé le projet, je pensais que les filtres comme le noir et blanc/sépia étaient très difficiles à réaliser, grâce au traitement photo. Tout est plus simple !

Ci-dessous, je vais donner un algorithme intéressant pour décomposer une image en spectres de pixels et traiter des photos.

<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;
}
Copier après la connexion

L'essence de l'algorithme est la suivante :

  1. Toute image sur Internet est décomposée en un spectre : Rouge, Vert, Bleu
  2. Créez 3 tableaux qui stockent le nombre de pixels de la couleur correspondante dans l'image (fonction détaillée dans le code)
  3. Lors de la sélection d'un filtre : traitez séquentiellement 3 tableaux pour ajouter/réduire la valeur de la palette de couleurs
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);
}
Copier après la connexion

Cela semble être un algorithme simple, mais il aide à comprendre les pixels de l'image et le traitement en fonction de la palette de couleurs. Je pense que cela mérite votre attention !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal