Heim > Backend-Entwicklung > PHP-Tutorial > Wie behalte ich die Bildproportionen beim Erstellen von Miniaturansichten bei?

Wie behalte ich die Bildproportionen beim Erstellen von Miniaturansichten bei?

Patricia Arquette
Freigeben: 2024-11-09 07:53:02
Original
886 Leute haben es durchsucht

How do I maintain image proportions when creating thumbnails?

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}.");
    }
}
Nach dem Login kopieren

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");
    }
}
Nach dem Login kopieren

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!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage