Malgré la disponibilité de diverses options de manipulation d'image, la réduction de la taille des images dans un canevas HTML5 peut parfois conduire à des résultats indésirables. résultats. En particulier, le manque de prise en charge des techniques de rééchantillonnage avancées telles que l'échantillonnage bicubique peut entraîner des images pixellisées et manquant de netteté.
Pour résoudre ce problème, une approche consiste à mettre en œuvre algorithmes de rééchantillonnage personnalisés dans JavaScript. Le rééchantillonnage de Lanczos est une technique couramment utilisée qui produit des images agrandies ou réduites de haute qualité en appliquant une moyenne pondérée des pixels environnants.
L'extrait de code suivant fournit un exemple de une fonction de rééchantillonnage Lanczos personnalisée :
function lanczosCreate(lobes) { return function(x) { if (x > lobes) return 0; x *= Math.PI; if (Math.abs(x) < 1e-16) return 1; var xx = x / lobes; return Math.sin(x) * Math.sin(xx) / x / xx; }; }
Cette fonction renvoie une autre fonction qui calcule le Lanczos poids pour une valeur x donnée.
Pour encapsuler le processus de rééchantillonnage, la classe de miniature suivante est introduite :
function thumbnailer(elem, img, sx, lobes) { this.canvas = elem; ... this.lanczos = lanczosCreate(lobes); this.ratio = img.width / sx; this.rcp_ratio = 2 / this.ratio; ... }
Cette classe prend un canevas élément, une image, la largeur mise à l'échelle et le nombre de lobes de Lanczos comme paramètres. Il gère le processus de rééchantillonnage et dessine l'image résultante sur le canevas.
La classe Thumbnailer implémente deux processus pour effectuer le rééchantillonnage :
En implémentant un algorithme de rééchantillonnage Lanczos personnalisé en JavaScript, vous pouvez obtenir une réduction d'échelle d'image de haute qualité dans un canevas HTML5. Cela élimine l'apparence pixélisée qui résulte souvent de l'utilisation des techniques de rééchantillonnage par défaut fournies par divers navigateurs.
Le code fourni dans cet article montre comment créer une vignette personnalisée qui utilise la méthode de rééchantillonnage de Lanczos, vous permettant de produire des images nettes. et des images détaillées réduites dans vos applications Web.
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!