Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Mengekalkan Ketelusan Apabila Mengubah Saiz PNG dalam PHP?

Bagaimana untuk Mengekalkan Ketelusan Apabila Mengubah Saiz PNG dalam PHP?

Barbara Streisand
Lepaskan: 2024-11-28 14:20:16
asal
618 orang telah melayarinya

How to Preserve Transparency When Resizing PNGs in PHP?

Cara Mengubah Saiz PNG dengan Latar Belakang Lutsinar Dengan Berkesan dalam PHP

Mengubah saiz imej PNG lutsinar dalam PHP boleh menjadi tugas yang mencabar, tetapi ia penting untuk mengekalkan kualiti imej. Kod yang anda berikan menghadapi masalah apabila warna latar belakang bertukar kepada hitam apabila saiz semula. Untuk membetulkannya, ikuti kod yang dikemas kini di bawah:

$this->image = imagecreatefrompng($filename);

imagealphablending($this->image, false);
imagesavealpha($this->image, true);

$newImage = imagecreatetruecolor($width, $height);

// Allocate a new transparent color and enable alpha blending
$background = imagecolorallocatealpha($newImage, 255, 255, 255, 127);
imagefilledrectangle($newImage, 0, 0, $width, $height, $background);
imagealphablending($newImage, true);
imagesavealpha($newImage, true);

// Resize the image with transparent background preserved
imagecopyresampled($newImage, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
$this->image = $newImage;

imagepng($this->image, $filename);
Salin selepas log masuk

Perubahan utama:

  • imagealphablending(false): Melumpuhkan pengadunan alfa sebelum memperuntukkan warna lutsinar untuk mengelakkan perkara yang tidak diingini pengadunan.
  • imagesavealpha(true): Mendayakan penyimpanan latar belakang lutsinar sebelum salinan imej.
  • imagefilledrectangle(): Mengisi imej baharu dengan telus warna.

Kemas kini:

Kod yang disediakan mengendalikan latar belakang lutsinar dengan kelegapan ditetapkan kepada 0. Walau bagaimanapun, untuk imej dengan nilai kelegapan antara 0 dan 100, ia tetap akan menghasilkan latar belakang hitam. Malangnya, tiada penyelesaian mudah dalam pustaka GD untuk mengendalikan kes penggunaan ini.

Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Ketelusan Apabila Mengubah Saiz PNG dalam PHP?. 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