Mengapakah imagecreatefrompng() Menghasilkan Latar Belakang Hitam Daripada Kawasan Lutsinar?

Barbara Streisand
Lepaskan: 2024-11-04 07:49:01
asal
384 orang telah melayarinya

Why does imagecreatefrompng() Produce a Black Background Instead of a Transparent Area?

imagecreatefrompng() Menghasilkan Latar Belakang Hitam Daripada Kawasan Lutsinar?

Dalam PHP, fungsi imagecreatefrompng() biasanya digunakan untuk berfungsi dengan PNG imej. Walau bagaimanapun, telah diperhatikan bahawa apabila menggunakan fungsi ini, ketelusan PNG mungkin ditukar kepada warna hitam pejal.

Untuk menyelesaikan isu ini, langkah berikut boleh dilaksanakan selepas mencipta kanvas baharu menggunakan imagecreatetruecolor():

  1. Peruntukkan Warna Hitam: Berikan warna hitam kepada pembolehubah integer menggunakan fungsi imagecolorallocate().
  2. Alih keluar Hitam daripada Transparency: Gunakan fungsi imagecolortransparent() untuk menetapkan hitam sebagai warna lutsinar, dengan berkesan menjadikannya tidak kelihatan.
  3. Lumpuhkan Pengadunan Alpha: Gunakan imagealphablending() dengan nilai palsu untuk menghalang saluran alfa daripada digabungkan ke dalam warna imej.
  4. Dayakan Pemeliharaan Saluran Alpha: Gunakan imagesavealpha() dengan nilai sebenar untuk mengekalkan julat ketelusan penuh.

Oleh melaksanakan pengubahsuaian ini, maklumat saluran alfa dalam imej PNG akan dikekalkan, menghalang penukarannya kepada latar belakang hitam. Kod yang dikemas kini akan menyerupai yang berikut:

<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>
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapakah imagecreatefrompng() Menghasilkan Latar Belakang Hitam Daripada Kawasan Lutsinar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!