Heim >Backend-Entwicklung >PHP-Tutorial >Wie behalte ich das Bildseitenverhältnis beim Zuschneiden von Bildern in PHP bei?

Wie behalte ich das Bildseitenverhältnis beim Zuschneiden von Bildern in PHP bei?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-03 16:46:03546Durchsuche

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

Bildzuschnitt in PHP

Beim Zuschneiden von Bildern in PHP können Probleme auftreten, insbesondere bei großen Bildern. Eine Lösung besteht darin, das Bild zu verkleinern.

Im angegebenen Beispielcode wird das Bild auf eine feste Größe (200 x 150) zugeschnitten, die möglicherweise nicht für größere Bilder geeignet ist. Um vor dem Zuschneiden konsistente Bildabmessungen zu erhalten, wird empfohlen, die Funktion imagecopyresampled() zu verwenden.

Die folgende Formel kann zum Generieren von Miniaturansichten verwendet werden:

$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);

Dieser Code berücksichtigt das Bildseitenverhältnis und stellt sicher, dass das in der Größe geänderte Bild dasselbe Seitenverhältnis wie die Miniaturansichtsgröße hat. und verhindert so Verzerrungen. Nach der Größenänderung und dem Zuschneiden wird ein Bild mit einheitlicher Größe erstellt, unabhängig von der ursprünglichen Bildgröße.

Das obige ist der detaillierte Inhalt vonWie behalte ich das Bildseitenverhältnis beim Zuschneiden von Bildern in PHP bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn