Pemotongan Imej dalam PHP: Pengoptimuman untuk Imej Besar dan Pemeliharaan Nisbah Aspek
Coretan kod yang disediakan memangkas imej dengan berkesan, tetapi hasilnya mungkin merosot apabila digunakan pada imej yang lebih besar. Untuk menangani isu ini, kami akan meneroka pendekatan alternatif yang melibatkan saiz semula imej asal sebelum memangkas untuk mencapai hasil yang konsisten dan optimum.
Mengubah Saiz untuk Pemeliharaan Nisbah Aspek
Sebelum ini memangkas imej, adalah penting untuk mengekalkan nisbah bidangnya untuk mengelakkan herotan. Nisbah aspek ialah perkadaran lebar imej dengan ketinggiannya. Dengan mengubah saiz imej supaya bahagian yang lebih kecil sepadan dengan dimensi pemangkasan yang diingini, kami boleh mengekalkan nisbah aspek asal.
Pelaksanaan Kod
Untuk melaksanakan pensaiz semula dan pemangkasan imej, kami akan mengubah suai bahagian berikut bagi kod yang disediakan:
<code class="php">$image = imagecreatefromjpeg($_GET['src']); $filename = 'images/cropped_whatever.jpg'; $thumb_width = 200; $thumb_height = 150; $width = imagesx($image); $height = imagesy($image); $original_aspect = $width / $height; $thumb_aspect = $thumb_width / $thumb_height; if ( $original_aspect >= $thumb_aspect ) { // If image is wider than thumbnail (in aspect ratio sense) $new_height = $thumb_height; $new_width = $width / ($height / $thumb_height); } else { // If the thumbnail is wider than the image $new_width = $thumb_width; $new_height = $height / ($width / $thumb_width); } $thumb = imagecreatetruecolor( $thumb_width, $thumb_height ); // Resize and crop imagecopyresampled($thumb, $image, 0 - ($new_width - $thumb_width) / 2, // Center the image horizontally 0 - ($new_height - $thumb_height) / 2, // Center the image vertically 0, 0, $new_width, $new_height, $width, $height); imagejpeg($thumb, $filename, 80);</code>
Penjelasan
Dengan mengikuti pendekatan ini, kami boleh memangkas imej yang lebih besar dengan berkesan dan mengekalkan nisbah bidang, memberikan hasil yang konsisten dan berkualiti tinggi.
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengoptimumkan pemangkasan imej dalam PHP untuk imej besar sambil mengekalkan nisbah bidang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!