Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengekalkan Nisbah Aspek Imej Apabila Memangkas Imej dalam PHP?

Bagaimana untuk Mengekalkan Nisbah Aspek Imej Apabila Memangkas Imej dalam PHP?

Patricia Arquette
Patricia Arquetteasal
2024-11-03 16:46:03508semak imbas

How to Maintain Image Aspect Ratio When Cropping Images in PHP?

Pemotongan Imej dalam PHP

Apabila memangkas imej dalam PHP, anda mungkin menghadapi masalah, terutamanya apabila berurusan dengan imej yang besar. Satu penyelesaian ialah "mengecilkan imej".

Dalam kod contoh yang diberikan, imej dipangkas kepada saiz tetap (200x150), yang mungkin tidak sesuai dengan imej yang lebih besar. Untuk mendapatkan dimensi imej yang konsisten sebelum memangkas, adalah disyorkan untuk menggunakan fungsi imagecopyresampled().

Formula berikut boleh digunakan untuk menjana lakaran kenit:

$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 )
{
    // 图像更宽(纵横比意义上)
    $new_height = $thumb_height;
    $new_width = $width / ($height / $thumb_height);
}
else
{
    // 缩略图更宽
    $new_width = $thumb_width;
    $new_height = $height / ($width / $thumb_width);
}

$thumb = imagecreatetruecolor( $thumb_width, $thumb_height );

// 调整大小并裁剪
imagecopyresampled($thumb,
    $image,
    0 - ($new_width - $thumb_width) / 2, // 水平居中图像
    0 - ($new_height - $thumb_height) / 2, // 垂直居中图像
    0, 0,
    $new_width, $new_height,
    $width, $height);
imagejpeg($thumb, $filename, 80);

Kod ini mengambil kira nisbah bidang imej, memastikan imej yang diubah saiz mempunyai nisbah bidang yang sama dengan saiz lakaran kecil, sekali gus mengelakkan herotan. Selepas mengubah saiz dan memotong, ia akan menghasilkan imej bersaiz konsisten tanpa mengira saiz imej asal.

Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Nisbah Aspek Imej Apabila Memangkas Imej dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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