Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Mengubah Saiz PNG dengan Ketelusan Menggunakan GDlib PHP dan Mengekalkan Saluran Alpha?
Mengubah saiz PNG dengan Ketelusan menggunakan GDlib PHP
Memelihara ketelusan imej adalah penting apabila berurusan dengan fail PNG. Walaupun GDlib menawarkan keupayaan manipulasi imej, mengubah saiz PNG dengan ketelusan yang dipelihara boleh memberikan cabaran.
Satu isu yang dihadapi apabila menggunakan fungsi imagecopyresampled GD ialah kawasan lutsinar dalam PNG asal digantikan dengan warna pepejal. Ini berlaku walaupun menetapkan imagesavealpha kepada benar.
Untuk menyelesaikan masalah ini, adalah penting untuk menentukan tetapan alfa dengan betul. Dalam PHP, tetapan alfa digunakan pada imej sasaran, bukan imej sumber. Dengan melaraskan sifat alfa imej sasaran, kami boleh mencapai pemeliharaan ketelusan:
imagealphablending( $targetImage, false ); imagesavealpha( $targetImage, true );
imagealphablending(false) melumpuhkan sebarang pengadunan dan menghormati saluran alfa imej. imagessavealpha(true) memastikan saluran alfa PNG dikekalkan dalam output.
Berikut ialah coretan kod PHP yang disemak semula yang menggabungkan pelarasan ini:
$uploadTempFile = $myField[ 'tmp_name' ] list( $uploadWidth, $uploadHeight, $uploadType ) = getimagesize( $uploadTempFile ); $srcImage = imagecreatefrompng( $uploadTempFile ); $targetImage = imagecreatetruecolor( 128, 128 ); imagealphablending( $targetImage, false ); imagesavealpha( $targetImage, true ); imagecopyresampled( $targetImage, $srcImage, 0, 0, 0, 0, 128, 128, $uploadWidth, $uploadHeight ); imagepng( $targetImage, 'out.png', 9 );
Kod yang diubah suai ini seharusnya mengubah saiz PNG dengan berkesan imej sambil mengekalkan ketelusan. Ambil perhatian bahawa ia tidak dijamin sempurna untuk semua kes, tetapi ia memberikan titik permulaan yang kukuh.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengubah Saiz PNG dengan Ketelusan Menggunakan GDlib PHP dan Mengekalkan Saluran Alpha?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!