Warum werden PNG-Bilder mit „imagecreatefrompng()' in PHP schwarz?

Susan Sarandon
Freigeben: 2024-11-03 14:46:30
Original
441 Leute haben es durchsucht

Why are PNG images turning black with `imagecreatefrompng()` in PHP?

PNG-Bilder wurden mit imagecreatefrompng() schwarz

Problem:

Benutzer sind auf ein Problem gestoßen Problem, bei dem die PHP-Funktion imagecreatefrompng() transparente Bereiche in PNG-Bildern in einfarbiges Schwarz umwandelt, wenn Miniaturansichten mit der GD-Bibliothek erstellt werden.

PHP-Miniaturansicht-Erstellungscode:

<code class="php">function cropImage($nw, $nh, $source, $stype, $dest) {
  // ...
  switch($stype) {
    case 'png':
      $simg = imagecreatefrompng($source);
      break;
    // ...
  }
  // ...
}</code>
Nach dem Login kopieren

Lösung:

Um dieses Problem zu beheben, sind zusätzliche Schritte vor imagecreatetruecolor() erforderlich, insbesondere für PNG- und GIF-Bilder. Diese Schritte umfassen:

<code class="php">// Before imagecreatetruecolor()

$dimg = imagecreatetruecolor($width_new, $height_new); // png ?: gif

// Additional steps for PNG and GIF

switch ($stype) {

    case 'gif':
    case 'png':
        // Black color
        $background = imagecolorallocate($dimg , 0, 0, 0);
        // Remove black from placeholder
        imagecolortransparent($dimg, $background);
        // Turn off alpha blending
        imagealphablending($dimg, false);
        // Turn on alpha channel saving
        imagesavealpha($dimg, true);
        break;

    default:
        break;
}</code>
Nach dem Login kopieren

Durch die Implementierung dieser zusätzlichen Schritte bleiben transparente Bereiche in PNG-Bildern erhalten, wenn Miniaturansichten mit imagecreatefrompng() erstellt werden.

Das obige ist der detaillierte Inhalt vonWarum werden PNG-Bilder mit „imagecreatefrompng()' in PHP schwarz?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!