Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann man große Bilder in PHP effektiv zuschneiden?

Wie kann man große Bilder in PHP effektiv zuschneiden?

Susan Sarandon
Susan SarandonOriginal
2024-11-03 18:49:02997Durchsuche

How to Effectively Crop Large Images in PHP?

Bild in PHP zuschneiden: Größe für größere Bilder ändern

Der bereitgestellte Code schneidet Bilder effektiv zu, kann jedoch bei größeren Bildern Probleme bereiten. Um dies zu beheben, können wir das Bild „herauszoomen“. Das Ziel besteht darin, die Konsistenz der Bildgrößen vor dem Zuschneiden beizubehalten und so optimale Ergebnisse zu gewährleisten.

Der Schlüssel zur Größenänderung von Bildern für Miniaturansichten ist die Verwendung von imagecopyresampled(). Durch die Größenänderung sollte die kleinere Seite des Bildes an die entsprechende Seite des Daumens angepasst werden. Wenn das Quellbild beispielsweise 1280 x 800 Pixel und die Miniaturansicht 200 x 150 Pixel groß ist, sollte die Größe des Bildes vor dem Zuschneiden auf 240 x 150 Pixel geändert werden. Dadurch wird sichergestellt, dass das Seitenverhältnis erhalten bleibt.

Hier ist ein überarbeiteter Code, der diesen Ansatz verwendet:

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

Dieser Code ändert zuerst die Größe des Bildes und schneidet es dann zu. Durch Anpassen der Größenänderungsparameter können Sie das Seitenverhältnis steuern und eine einheitliche Größe für Miniaturansichten beibehalten.

Das obige ist der detaillierte Inhalt vonWie kann man große Bilder in PHP effektiv zuschneiden?. 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