ImageCopy Resultation dans PHP - Problème alpha prémultiplié
-
12-11-2019 - |
Question
J'ai un problème avec l'image-échantillon d'échantillonnage pour les tampons qui utilisent les valeurs alpha. Apparemment, l'algorithme prémultiplies les valeurs alpha de pixels avant le filtrage, cela entraîne des objets d'arrondi les frontières noires.
Étapes à reproduire:
Prenez une image complètement blanche dans la partie RVB et qui a un cercle blanc (antialiasé !!) (allez avec un cercle, pas avec un carré!) Sur fond noir dans la partie alpha (donc la partie alpha aura principalement totalement Pixels blancs et totalement noirs, ainsi que certains pixels de gradient sur les bordures du cercle en raison de l'antialiasage - cela signifie que l'image d'entrée n'est pas prémultiplie - elle est droite / non handicapée, car la partie RGB de l'image est complètement blanche).
Échec de l'image par moitié en utilisant l'image-échantillon
Composez le résultat sur une image complètement blanche
Ce que j'attendais: image complètement blanche
Ce que j'obtiens: une frontière grisâtre a arrêté le contour du cercle
Je suis à peu près sûr que cela est dû à l'alpha prémultiplié dans l'algorithme Scaledown (l'algorithme multiplie la valeur alpha des pixels avec sa valeur RGB pour calculer la nouvelle valeur RGB - donc les pixels blancs deviendront gris)
Est-ce que quelqu'un connaît un travail de travail pour cela?
La solution
Je suggérerais d'essayer l'image Magick pour PHP.
http://www.php.net/manual/en/imagick.resizeimage.php
http://www.php.net/manual/en/imagick.scaleimage.php
D'après mon expérience, tous les tracas concernant l'imagerie en PHP disparaissent.