Heim Backend-Entwicklung PHP-Tutorial Wie kann ich den Bildzuschnitt in PHP für große Bilder optimieren und gleichzeitig das Seitenverhältnis beibehalten?

Wie kann ich den Bildzuschnitt in PHP für große Bilder optimieren und gleichzeitig das Seitenverhältnis beibehalten?

Nov 03, 2024 pm 05:25 PM

How can I optimize image cropping in PHP for large images while preserving the aspect ratio?

Bildzuschnitt in PHP: Optimierung für große Bilder und Beibehaltung des Seitenverhältnisses

Das bereitgestellte Code-Snippet schneidet Bilder effektiv zu, aber die Ergebnisse können sich verschlechtern wenn es auf größere Bilder angewendet wird. Um dieses Problem anzugehen, werden wir einen alternativen Ansatz untersuchen, bei dem die Größe des Originalbilds vor dem Zuschneiden geändert wird, um konsistente und optimale Ergebnisse zu erzielen.

Größenänderung zur Beibehaltung des Seitenverhältnisses

Vorher Beim Zuschneiden eines Bildes ist es wichtig, das Seitenverhältnis beizubehalten, um Verzerrungen zu vermeiden. Das Seitenverhältnis ist das Verhältnis der Breite des Bildes zur Höhe. Indem wir die Größe des Bildes so ändern, dass die kleinere Seite den gewünschten Zuschnittabmessungen entspricht, können wir das ursprüngliche Seitenverhältnis beibehalten.

Code-Implementierung

Um die Größenänderung und das Zuschneiden von Bildern zu implementieren, Wir werden den folgenden Teil des bereitgestellten Codes ändern:

<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 &gt;= $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>
Nach dem Login kopieren

Erklärung

  1. Wir berechnen das ursprüngliche Seitenverhältnis (original_aspect) und das Zielseitenverhältnis (thumb_aspect), um die neuen Abmessungen des Bildes zu bestimmen.
  2. Wir prüfen, ob das Originalbild im Hinblick auf das Seitenverhältnis breiter als das Miniaturbild ist.
  3. Wenn das Originalbild breiter ist, stellen wir ein Stellen Sie die neue Höhe so ein, dass sie mit der Höhe des Miniaturbilds übereinstimmt, und berechnen Sie die neue Breite proportional.
  4. Wenn das Miniaturbild breiter ist, stellen wir die neue Breite so ein, dass sie mit der Breite des Miniaturbilds übereinstimmt, und berechnen die neue Höhe proportional.
  5. Wir erstellen ein neues Bild ($thumb) mit den gewünschten Miniaturbildabmessungen.
  6. Wir verwenden imagecopyresampled(), um die Größe des Originalbilds zu ändern und es in das neue Miniaturbild zuzuschneiden, wobei das Seitenverhältnis beibehalten wird.
  7. Endlich , speichern wir das zugeschnittene Miniaturbild in der angegebenen Datei.

Durch diesen Ansatz können wir größere Bilder effektiv zuschneiden und das Seitenverhältnis beibehalten, wodurch konsistente und qualitativ hochwertige Ergebnisse geliefert werden.

Das obige ist der detaillierte Inhalt vonWie kann ich den Bildzuschnitt in PHP für große Bilder optimieren und gleichzeitig das Seitenverhältnis beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

11 beste PHP -URL -Shortener -Skripte (kostenlos und Premium) 11 beste PHP -URL -Shortener -Skripte (kostenlos und Premium) Mar 03, 2025 am 10:49 AM

11 beste PHP -URL -Shortener -Skripte (kostenlos und Premium)

Einführung in die Instagram -API Einführung in die Instagram -API Mar 02, 2025 am 09:32 AM

Einführung in die Instagram -API

Arbeiten mit Flash -Sitzungsdaten in Laravel Arbeiten mit Flash -Sitzungsdaten in Laravel Mar 12, 2025 pm 05:08 PM

Arbeiten mit Flash -Sitzungsdaten in Laravel

Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests Mar 12, 2025 pm 05:09 PM

Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests

Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Mar 14, 2025 am 11:42 AM

Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs

Erstellen Sie eine React -App mit einem Laravel -Back -Ende: Teil 2, reagieren Erstellen Sie eine React -App mit einem Laravel -Back -Ende: Teil 2, reagieren Mar 04, 2025 am 09:33 AM

Erstellen Sie eine React -App mit einem Laravel -Back -Ende: Teil 2, reagieren

12 Beste PHP -Chat -Skripte auf Codecanyon 12 Beste PHP -Chat -Skripte auf Codecanyon Mar 13, 2025 pm 12:08 PM

12 Beste PHP -Chat -Skripte auf Codecanyon

Benachrichtigungen in Laravel Benachrichtigungen in Laravel Mar 04, 2025 am 09:22 AM

Benachrichtigungen in Laravel

See all articles