Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Imej Kecil PNG Hilang Ketelusan Apabila Menggunakan imagecreatefrompng()?

Mengapa Imej Kecil PNG Hilang Ketelusan Apabila Menggunakan imagecreatefrompng()?

Susan Sarandon
Susan Sarandonasal
2024-11-04 11:33:30702semak imbas

Why Do PNG Thumbnails Lose Transparency When Using imagecreatefrompng()?

Kehilangan Ketelusan PNG dalam Imej Kecil Imej

Apabila mencipta lakaran kecil dengan perpustakaan GD menggunakan fungsi imagecreatefrompng(), pengguna telah menghadapi isu di mana latar belakang lutsinar PNG digantikan dengan warna hitam pejal. Untuk menangani perkara ini, mari kita periksa kod dan kenal pasti penyelesaian.

Kod yang disediakan mengubah saiz imej dengan berkesan dan menyimpannya sebagai JPEG. Walau bagaimanapun, masalahnya terletak pada permulaan imej destinasi ($dimg) menggunakan fungsi imagecreatetruecolor(). Untuk mengekalkan ketelusan dalam imej PNG, langkah tambahan diperlukan. Berikut ialah versi kod yang diubah suai:

<code class="php">$dimg = imagecreatetruecolor($width_new, $height_new);

// Start changes for PNG transparency
switch ($stype) {

    case 'gif':
    case 'png':
        // Define black as a color
        $background = imagecolorallocate($dimg, 0, 0, 0);
        // Make black transparent
        imagecolortransparent($dimg, $background);
        // Disable blending to avoid mixing black with the image
        imagealphablending($dimg, false);
        // Enable alpha channel preservation
        imagesavealpha($dimg, true);
        break;

    default:
        break;
}
// End changes

$wm = $w/$nw;
$hm = $h/$nh;</code>

Dengan menambahkan langkah ini, kami memastikan bahawa:

  • Warna latar belakang lutsinar ditentukan.
  • Lutsinar warna dialih keluar daripada imej destinasi.
  • Campuran alpha dinyahdayakan untuk menghalang warna lutsinar daripada bercampur dengan imej.
  • Maklumat saluran Alpha dipelihara, mengekalkan ketelusan dalam lakaran kecil yang terhasil.

Atas ialah kandungan terperinci Mengapa Imej Kecil PNG Hilang Ketelusan Apabila Menggunakan imagecreatefrompng()?. 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