Maison >interface Web >tutoriel CSS >Comment puis-je enregistrer une image avec des filtres CSS appliqués sur le canevas sans serveur ?

Comment puis-je enregistrer une image avec des filtres CSS appliqués sur le canevas sans serveur ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-29 09:56:09642parcourir

How Can I Save an Image with CSS Filters Applied on the Canvas Without a Server?

Enregistrement d'une image avec des filtres CSS appliqués sur Canvas sans backend

Pour enregistrer une image avec des filtres CSS appliqués côté client, suivez ces étapes :

Convertir en canevas et extraire les données de l'image

  1. Convertir l'image en canevas à l'aide document.getElementById("myCanvas").getContext("2d").drawImage(image, 0, 0, canvas.width, canvas.height);.
  2. Extraire les données de l'image avec les filtres appliqués à l'aide de myCanvas. toDataURL("image/png").

Appliquer des filtres CSS à Context

Cependant, l'image sera enregistrée sans effets si la propriété de filtre contextuel n'est pas prise en charge. Pour résoudre ce problème :

  1. Vérifiez l'existence de la propriété context.filter à l'aide de typeof ctx.filter === "undefined".
  2. Si elle est prise en charge, appliquez des filtres CSS à l'aide de ctx. filter = "filterValue" avant de dessiner l'image sur le canevas.
  3. S'il n'est pas pris en charge, appliquez manuellement des filtres en utilisant une méthode alternative non affichée ici.

Exemple

Cet exemple applique un filtre sépia à une image à l'aide de la propriété filter. S'il n'est pas pris en charge, il utilisera une solution de secours (non illustrée).

var img = new Image();
img.crossOrigin = "";
img.onload = draw;
img.src = "//i.imgur.com/WblO1jx.jpg";

function draw() {
  var canvas = document.querySelector("canvas"),
    ctx = canvas.getContext("2d");

  canvas.width = this.width;
  canvas.height = this.height;

  // filter
  if (typeof ctx.filter === "undefined") {
    ctx.filter = "sepia(0.8)";
    ctx.drawImage(this, 0, 0);
  } else {
    ctx.drawImage(this, 0, 0);
    // TODO: manually apply filter here.
  }

  document.querySelector("img").src = canvas.toDataURL();
}

N'oubliez pas que les filtres CSS s'appliquent uniquement à l'apparence des éléments, et non aux données bitmap réelles. Pour appliquer des filtres réels, travaillez avec le bitmap au niveau des pixels si la propriété de filtre n'est pas disponible.

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:
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