Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah imej PNG menjadi hitam dengan `imagecreatefrompng()` dalam PHP?

Mengapakah imej PNG menjadi hitam dengan `imagecreatefrompng()` dalam PHP?

Susan Sarandon
Susan Sarandonasal
2024-11-03 14:46:30475semak imbas

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

Imej PNG Menjadi Hitam dengan imagecreatefrompng()

Masalah:

Pengguna telah menghadapi isu di mana fungsi imagecreatefrompng() PHP menukar kawasan lutsinar dalam imej PNG kepada hitam pejal apabila mencipta lakaran kenit menggunakan perpustakaan GD.

Kod Penciptaan Gambar Kecil PHP:

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

Penyelesaian:

Untuk menyelesaikan isu ini, langkah tambahan sebelum imagecreatetruecolor() diperlukan, khusus untuk imej PNG dan GIF. Langkah-langkah ini melibatkan:

<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>

Dengan melaksanakan langkah tambahan ini, kawasan lutsinar dalam imej PNG akan dikekalkan apabila membuat lakaran kecil menggunakan imagecreatefrompng().

Atas ialah kandungan terperinci Mengapakah imej PNG menjadi hitam dengan `imagecreatefrompng()` dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn