Heim > Artikel > Backend-Entwicklung > Warum erzeugt imagecreatefrompng() einen schwarzen Hintergrund anstelle eines transparenten Bereichs?
imagecreatefrompng() Erzeugt schwarzen Hintergrund anstelle eines transparenten Bereichs?
In PHP wird die Funktion imagecreatefrompng() häufig für die Arbeit mit PNG verwendet Bilder. Es wurde jedoch beobachtet, dass bei Verwendung dieser Funktion die PNG-Transparenz möglicherweise in eine durchgehende schwarze Farbe umgewandelt wird.
Um dieses Problem zu beheben, können die folgenden Schritte ausgeführt werden, nachdem mit imagecreatetruecolor() eine neue Leinwand erstellt wurde:
Von Bei der Umsetzung dieser Änderungen bleiben die Alphakanalinformationen im PNG-Bild erhalten und verhindern so die Konvertierung in einen schwarzen Hintergrund. Der aktualisierte Code würde wie folgt aussehen:
<code class="php"><?php // ... Before imagecreatetruecolor() $dimg = imagecreatetruecolor($width_new, $height_new); // png ?: gif // start changes switch ($stype) { case 'gif': case 'png': // integer representation of the color black (rgb: 0,0,0) $background = imagecolorallocate($dimg , 0, 0, 0); // removing the black from the placeholder imagecolortransparent($dimg, $background); // turning off alpha blending (to ensure alpha channel information // is preserved, rather than removed (blending with the rest of the // image in the form of black)) imagealphablending($dimg, false); // turning on alpha channel information saving (to ensure the full range // of transparency is preserved) imagesavealpha($dimg, true); break; default: break; } // end changes $wm = $w/$nw; $hm = $h/$nh; // ...</code>
Das obige ist der detaillierte Inhalt vonWarum erzeugt imagecreatefrompng() einen schwarzen Hintergrund anstelle eines transparenten Bereichs?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!