Thumbnails erstellen: Bildproportionen beibehalten
In Ihrer Anfrage möchten Sie aus einem hochgeladenen Bild ein Thumbnail erstellen und so sicherstellen, dass es sein Aussehen beibehält Verhältnis. Lassen Sie uns dies im Detail ansprechen:
Die Bedeutung des Seitenverhältnisses
Die Beibehaltung des Seitenverhältnisses eines Bildes ist entscheidend, um seine ursprüngliche Form beizubehalten und Verzerrungen zu verhindern. Ohne Beibehaltung der Proportionen kann ein Miniaturbild gequetscht oder gestreckt erscheinen, was die visuelle Integrität des Bildes beeinträchtigt.
Miniaturansichten mit Imagick erstellen
Um ein Miniaturbild zu erstellen, das das Bildformat berücksichtigt Erwägen Sie die Verwendung der Imagick-Bibliothek, die erweiterte Bildbearbeitungsfunktionen bietet. Hier ist eine Beispielfunktion:
/** * * Generate Thumbnail using Imagick class * * @param string $img * @param string $width * @param string $height * @param int $quality * @return boolean on true * @throws Exception * @throws ImagickException */ function generateThumbnail($img, $width, $height, $quality = 90) { if (is_file($img)) { $imagick = new Imagick(realpath($img)); $imagick->setImageFormat('jpeg'); $imagick->setImageCompression(Imagick::COMPRESSION_JPEG); $imagick->setImageCompressionQuality($quality); $imagick->thumbnailImage($width, $height, false, false); $filename_no_ext = reset(explode('.', $img)); if (file_put_contents($filename_no_ext . '_thumb' . '.jpg', $imagick) === false) { throw new Exception("Could not put contents."); } return true; } else { throw new Exception("No valid image provided with {$img}."); } }
Diese Funktion verwendet die Methode „thumbnailImage“, um ein Miniaturbild mit der angegebenen Breite und Höhe zu generieren und dabei das ursprüngliche Seitenverhältnis beizubehalten.
Alternative Miniaturbildgenerierung
Alternativ können Sie die GD-Bibliothek zum Erstellen von Miniaturansichten verwenden. Dieser Ansatz erfordert mehr manuelle Berechnungen, da Sie die geeigneten Abmessungen bestimmen müssen, um das Seitenverhältnis des Bildes beizubehalten.
Hier ist eine Beispielfunktion, die zeigt, wie Miniaturansichten mithilfe der GD-Bibliothek erstellt werden:
function makeThumbnails($updir, $img, $id) { $thumbnail_width = 134; $thumbnail_height = 189; $thumb_beforeword = "thumb"; $arr_image_details = getimagesize("$updir" . $id . '_' . "$img"); // pass id to thumb name $original_width = $arr_image_details[0]; $original_height = $arr_image_details[1]; if ($original_width > $original_height) { $new_width = $thumbnail_width; $new_height = intval($original_height * $new_width / $original_width); } else { $new_height = $thumbnail_height; $new_width = intval($original_width * $new_height / $original_height); } $dest_x = intval(($thumbnail_width - $new_width) / 2); $dest_y = intval(($thumbnail_height - $new_height) / 2); if ($arr_image_details[2] == IMAGETYPE_GIF) { $imgt = "ImageGIF"; $imgcreatefrom = "ImageCreateFromGIF"; } if ($arr_image_details[2] == IMAGETYPE_JPEG) { $imgt = "ImageJPEG"; $imgcreatefrom = "ImageCreateFromJPEG"; } if ($arr_image_details[2] == IMAGETYPE_PNG) { $imgt = "ImagePNG"; $imgcreatefrom = "ImageCreateFromPNG"; } if ($imgt) { $old_image = $imgcreatefrom("$updir" . $id . '_' . "$img"); $new_image = imagecreatetruecolor($thumbnail_width, $thumbnail_height); imagecopyresized($new_image, $old_image, $dest_x, $dest_y, 0, 0, $new_width, $new_height, $original_width, $original_height); $imgt($new_image, "$updir" . $id . '_' . "$thumb_beforeword" . "$img"); } }
Wenn Sie eine dieser Funktionen verwenden, erhalten Sie Miniaturansichten, die das Seitenverhältnis des Originalbilds beibehalten.
Das obige ist der detaillierte Inhalt vonWie behalte ich die Bildproportionen beim Erstellen von Miniaturansichten bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!