Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Mengekalkan Ketelusan Apabila Mengubah Saiz PNG dalam PHP?
Memelihara Ketelusan Apabila Mengubah Saiz PNG dalam PHP
Apabila menukar saiz imej PNG dengan latar belakang telus dalam PHP, adalah penting untuk memastikan ketelusan adalah dikekalkan. Walau bagaimanapun, banyak sampel kod dalam talian gagal mencapai ini dengan betul, mengakibatkan latar belakang hitam selepas saiz semula.
Untuk menangani isu ini, adalah perlu untuk membuat pelarasan khusus pada kod. Sebelum melaksanakan fungsi imagecolorallocatealpha(), adalah penting untuk mengkonfigurasi kedua-dua mod campuran dan bendera saluran alfa simpan masing-masing kepada palsu dan benar.
Berikut ialah coretan kod dikemas kini yang menggabungkan pelarasan ini:
<?php /** * https://stackoverflow.com/a/279310/470749 * * @param resource $image * @param int $newWidth * @param int $newHeight * @return resource */ public function getImageResized($image, int $newWidth, int $newHeight) { $newImg = imagecreatetruecolor($newWidth, $newHeight); imagealphablending($newImg, false); // Turn off blending imagesavealpha($newImg, true); // Turn on save alpha channel $transparent = imagecolorallocatealpha($newImg, 255, 255, 255, 127); imagefilledrectangle($newImg, 0, 0, $newWidth, $newHeight, $transparent); $src_w = imagesx($image); $src_h = imagesy($image); imagecopyresampled($newImg, $image, 0, 0, 0, 0, $newWidth, $newHeight, $src_w, $src_h); return $newImg; } ?>
Dengan pengubahsuaian ini, kod harus mengekalkan ketelusan imej PNG dengan berkesan selepas mengubah saiz.
Nota: Kod yang dikemas kini ini berfungsi dengan betul hanya untuk imej dengan kelegapan latar belakang 0. Jika kelegapan imej jatuh antara 0 dan 100, latar belakang akan kelihatan hitam selepas saiz semula.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengekalkan Ketelusan Apabila Mengubah Saiz PNG dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!