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
Libérer: 2024-11-29 09:56:09
original
566 Les gens l'ont consulté

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

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!

source:php.cn
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