Maison > développement back-end > tutoriel php > Comment puis-je préserver la transparence lors du redimensionnement des fichiers PNG en PHP ?

Comment puis-je préserver la transparence lors du redimensionnement des fichiers PNG en PHP ?

Susan Sarandon
Libérer: 2024-11-23 22:46:10
original
228 Les gens l'ont consulté

How Can I Preserve Transparency When Resizing PNGs in PHP?

Préserver la transparence lors du redimensionnement des fichiers PNG en PHP

Lors du redimensionnement d'images PNG avec un arrière-plan transparent en PHP, il est crucial de s'assurer que la transparence est maintenu. Cependant, de nombreux exemples de code en ligne ne parviennent pas à y parvenir correctement, ce qui entraîne un arrière-plan noir après le redimensionnement.

Pour résoudre ce problème, il est nécessaire d'apporter des ajustements spécifiques au code. Avant d'exécuter la fonction imagecolorallocatealpha(), il est essentiel de configurer à la fois le mode de fusion et l'indicateur de canal alpha de sauvegarde sur false et true, respectivement.

Voici un extrait de code mis à jour qui intègre ces ajustements :

<?php
/**
 * https://stackoverflow.com/a/279310/470749
 * 
 * @param resource $image
 * @param int $newWidth
 * @param int $newHeight
 * @return resource
 */
public function getImageResized($image, int $newWidth, int $newHeight) {
    $newImg = imagecreatetruecolor($newWidth, $newHeight);
    imagealphablending($newImg, false); // Turn off blending
    imagesavealpha($newImg, true); // Turn on save alpha channel
    $transparent = imagecolorallocatealpha($newImg, 255, 255, 255, 127);
    imagefilledrectangle($newImg, 0, 0, $newWidth, $newHeight, $transparent);
    $src_w = imagesx($image);
    $src_h = imagesy($image);
    imagecopyresampled($newImg, $image, 0, 0, 0, 0, $newWidth, $newHeight, $src_w, $src_h);
    return $newImg;
}
?>
Copier après la connexion

Avec ces modifications, le code devrait effectivement maintenir la transparence des images PNG après redimensionnement.

Remarque : Ce code mis à jour ne fonctionne correctement que pour les images avec une opacité d'arrière-plan de 0. Si l'opacité de l'image est comprise entre 0 et 100, l'arrière-plan apparaîtra noir après le redimensionnement.

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