Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erstelle ich in PHP proportionale Miniaturansichten für große Bilder?

Wie erstelle ich in PHP proportionale Miniaturansichten für große Bilder?

DDD
DDDOriginal
2024-11-05 19:29:02683Durchsuche

How to Create Proportional Thumbnails in PHP for Large Images?

Skalierte Miniaturansichten in PHP erstellen

Das bereitgestellte Code-Snippet schneidet ein Bild erfolgreich innerhalb einer bestimmten Dimension zu. Bei größeren Bildern führt dies jedoch möglicherweise nicht zu den gewünschten Ergebnissen. Um dieses Problem zu beheben, muss zunächst die Größe des Bildes geändert werden. Dabei muss sichergestellt werden, dass die kleinere Größe des geänderten Bildes mit der entsprechenden Größe der Miniaturansicht übereinstimmt.

Um proportionale Miniaturansichten zu erstellen, führen Sie die folgenden Schritte aus:

  1. Bestimmen Sie die Seitenverhältnisse des Quellbilds und des gewünschten Miniaturbilds.
  2. Vergleichen Sie die Seitenverhältnisse. Wenn das Quellbild breiter ist, berechnen Sie die neue Höhe und Breite entsprechend. Wenn das Miniaturbild hingegen breiter ist, berechnen Sie die neue Breite und Höhe.
  3. Erstellen Sie ein neues Bild mit den berechneten Abmessungen.
  4. Führen Sie einen Resampling-Vorgang durch, um die Größe des Quellbilds an die neuen Abmessungen anzupassen unter Beibehaltung des Seitenverhältnisses.
  5. Schneiden Sie das skalierte Bild auf die angegebenen Miniaturbildabmessungen zu.
  6. Speichern Sie das zugeschnittene Bild als Miniaturbild.

Hier ist ein aktualisiertes Codebeispiel das die folgenden Schritte implementiert:

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

Durch die Einbindung der Bildgrößenänderung in den Miniaturbild-Generierungsprozess ist es möglich, gut proportionierte Miniaturbilder zu erstellen, die unabhängig von der ursprünglichen Bildgröße sind.

Das obige ist der detaillierte Inhalt vonWie erstelle ich in PHP proportionale Miniaturansichten für große Bilder?. 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