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
819 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="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/173352709543373.jpg" class="lazy" 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!

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