Bagaimanakah Saya Boleh Mengekalkan Ketelusan Apabila Mengubah Saiz PNG dalam PHP?

Susan Sarandon
Lepaskan: 2024-11-23 22:46:10
asal
117 orang telah melayarinya

How Can I Preserve Transparency When Resizing PNGs in 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;
}
?>
Salin selepas log masuk

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!

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