J'ai été intrigué par this discussion de mise à l'échelle de l'image et j'ai ensuite découvert que le code PHP que j'utilise pour créer des vignettes à partir d'images téléchargées souffre du même problème. J'ai décidé d'essayer le correctif PHP posté vers le bas (conversion de gamma de 2.2 à 1.0, redimensionnement de l'image, conversion de gamma de 1.0 à 2.2). Cela fonctionne pour résoudre le problème noté dans l'article, mais cette modification du code a l'effet secondaire regrettable d'éliminer la transparence du canal alpha PNG.PHP GD2: comment maintenir la transparence du canal alpha et corriger le gamma
Voici le code que j'ai avec la correction gamma en place.
<?php
$image = imagecreatefrompng($source_file);
$resized_image = imagecreatetruecolor($new_width, $new_height);
imagealphablending($resized_image, false);
imagesavealpha($resized_image, true);
imagegammacorrect($image, 2.2, 1.0);
imagecopyresampled($resized_image, $image, 0, 0, 0, 0, $new_width, $new_height, $image_width, $image_height);
imagegammacorrect($resized_image, 1.0, 2.2);
imagepng($resized_image, $dest_file);
?>
Quelqu'un sait comment redimensionner l'image, en utilisant l'astuce de correction gamma, tout en maintenant la transparence du canal alpha de l'image originale?
Modifier
exemples d'images:
- fichier original - PNG avec transparence du canal alpha
- fichier redimensionné avec les appels de la fonction imagegammacorrect() en commentaire
- fichier redimensionné à la fois imagegammacorrect() appels de fonction en place
Vous pouvez voir que La transparence est bonne jusqu'à ce que vous essayez de corriger le gamma. (Meilleure façon de voir la transparence travaille ci-dessous est d'inspecter l'étiquette de paragraphe enroulé autour des images et ajouter un arrière-plan:. Noir, son attribut de style via Firebug ou similaire)
original image http://ender.hosting.emarketsouth.com/images/test-image.png no gamma correction http://ender.hosting.emarketsouth.com/images/test-image-resized-no-gamma.png gamma corrected - no transparency http://ender.hosting.emarketsouth.com/images/test-image-resized.png
intéressant, je vais devoir passer du temps avec ça demain quand je serai de retour au bureau :) –
eu un petit refactoring à faire pour pouvoir le combiner avec mon code existant, mais à la fin cela fonctionne très bien. Très appréciée! –