Heim >Backend-Entwicklung >PHP-Tutorial >Warum rendert „imagecreatefrompng()' einen schwarzen Hintergrund statt Transparenz?

Warum rendert „imagecreatefrompng()' einen schwarzen Hintergrund statt Transparenz?

Linda Hamilton
Linda HamiltonOriginal
2024-11-04 01:30:03591Durchsuche

Why Does `imagecreatefrompng()` Render a Black Background Instead of Transparency?

Imagecreatefrompng() rendert schwarzen Hintergrund statt Transparenz

Der bereitgestellte PHP-Code zum Generieren von Miniaturansichten mithilfe der GD-Bibliothek stößt auf ein Problem mit der PNG-Transparenz wird durch eine durchgehend schwarze Farbe ersetzt. Um dieses Problem zu beheben, sind Änderungen am Code erforderlich, um die Alphakanalinformationen des PNG-Bilds beizubehalten.

Innerhalb der Funktion „cropImage()“ sollten nach dem Aufruf von „imagecreatetruecolor()“ die folgenden Änderungen implementiert werden:

<code class="php">switch ($stype) {

    case 'gif':
    case 'png':
        // Allocate black color and set as background
        $background = imagecolorallocate($dimg, 0, 0, 0);
        // Set black as transparent
        imagecolortransparent($dimg, $background);

        // Disable alpha blending to preserve transparency
        imagealphablending($dimg, false);

        // Enable alpha channel saving to preserve full transparency range
        imagesavealpha($dimg, true);
        break;

    default:
        break;
}</code>

Diese Änderungen stellen sicher, dass der schwarze Hintergrund entfernt wird und die Transparenz des PNG erhalten bleibt. Durch die Deaktivierung der Alpha-Mischung wird verhindert, dass die transparenten Bereiche des PNG mit der schwarzen Farbe gemischt werden. Die Aktivierung der Alphakanal-Speicherung garantiert die Beibehaltung des gesamten Transparenzbereichs.

Durch die Implementierung dieser Codeänderungen sollte der Miniaturbildgenerator die PNG-Transparenz korrekt beibehalten und transparente Hintergründe anstelle von Schwarz rendern.

Das obige ist der detaillierte Inhalt vonWarum rendert „imagecreatefrompng()' einen schwarzen Hintergrund statt Transparenz?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn