PHP GD ändert die Größe des transparenten Bildes und gibt einen schwarzen Rahmen

9

Ich versuche, ein paar transparente Bilder in PHP mit GD zu verkleinern, und wenn ich das tue, gibt es einen seltsamen schwarzen Rahmen, der um ihn herum hinzugefügt wird.

Vorher

Nach

Code

%Vor%

Es scheint, dass, wenn ich den Code für die neuen Dimensionen so ändere, dass sie mit dem alten identisch sind (indem - 1 entfernt wird), keine schwarzen Ränder erscheinen. Also verursacht die Größenänderung das Problem.

Hat jemand eine Idee, was könnte falsch sein?

Bearbeiten: Ich habe gerade festgestellt, dass es nur mit imagecopyresampled passiert und nicht imagecopyresized . % Co_de% bietet jedoch einen viel besseren visuellen Effekt und ich würde es gerne machen, wenn möglich.

    
Alex Turpin 15.11.2011, 18:20
quelle

1 Antwort

3

Ich denke, das Problem ist hier Ihr Quellbild.

Was Sie haben, ist kein True-Color-PNG mit Alphakanal, sondern ein PNG mit indizierter Farbe und transparenter Farbe. Dies ist offensichtlich, wenn Sie das Bild in Photoshop öffnen:

Dieses Bild wurde bereits mit Anti-Aliasing erstellt (wodurch der gelbe Text den hier gezeigten weißen Rahmen erhält), aber wenn Sie die Größe neu bestimmen, können die Subpixelberechnungen etwas außerhalb der Grenzen liegen.

Ich vermute, wenn Sie das Bild korrigieren und es mit einem Alphakanal voll RGB machen, haben Sie dieses Problem nicht.

    
Brad 15.11.2011, 19:19
quelle

Tags und Links