Bildgröße in PHP ändern

Muhammad Abubakar 30 Januar 2023
  1. Laden Sie das Bild vor der Größenänderung
  2. imagecopyresized() in PHP
  3. imagecopyresampled() in PHP
  4. imagescale() in PHP
Bildgröße in PHP ändern

In diesem Tutorial-Artikel besprechen wir die Größenänderung eines Bildes in PHP.

Laden Sie das Bild vor der Größenänderung

Bevor wir die Größe eines Bildes ändern, müssen wir es zuerst als Bildressource innerhalb des Skripts laden. Es ist nicht dasselbe wie die Verwendung von Funktionen wie file_get_contents(), um den Inhalt der Bilddatei abzurufen. Um die Datei zu laden, müssen wir unter anderem Funktionen wie imagecreatefromjpeg(), imagecreatefrompng() und imagecreatefromgif() verwenden. Abhängig von der Art des Bildes, das wir in der Größe ändern werden, verwenden wir entsprechend eine andere Funktion.

getimagesize() in PHP

Nach dem Laden des Bildes berechnen wir mit getimagesize() die Breite, Höhe und den Typ des Eingabebildes. Diese Funktion gibt eine Liste von Elementen zurück, in der die Breite und Höhe des Bildes an den Indizes 0 bzw. 1 gespeichert sind und die Konstanten IMAGETYPE_XXX an Index 2 gespeichert sind. Wir verwenden den Wert dieser zurückgegebenen Konstanten, um herauszufinden, was Art des zu verwendenden Bildes und welche Funktion verwendet werden soll.

<?php
function load_image($filename, $type) {
    $new = 'new34.jpeg';
    if( $type == IMAGETYPE_JPEG ) {
        $image = imagecreatefromjpeg($filename);
        echo "here is jpeg output:";
        imagejpeg($image, $new);

    }
    elseif( $type == IMAGETYPE_PNG ) {
        $image = imagecreatefrompng($filename);
        echo "here is png output:";
        imagepng($image,$new);
    }
    elseif( $type == IMAGETYPE_GIF ) {
        $image = imagecreatefromgif($filename);
        echo "here is gif output:";
        imagejpeg($image, $new);
    }
    return $new;
}

$filename = "panda.jpeg";
list($width, $height,$type) = getimagesize($filename);
echo "Width:" , $width,"\n";
echo "Height:", $height,"\n";
echo "Type:", $type, "\n";

$old_image = load_image($filename, $type);
?>

Eingabebild:

php Bildgröße ändern - Originalbild

Ausgabe:

Width:225
Height:225
Type:2
here is jpeg output:

Ausgabe_Bild:

php Bildgröße ändern

Beides sind die gleichen Bilder, da wir in diesem Abschnitt nur das Bild laden und die Größe des Originalbilds berechnen.

imagecopyresized() in PHP

imagecopyresized() nimmt einen länglichen Bereich der Breite src_w und der Höhe src_h von src_image an Position (src_x,src_y) und platziert ihn in einem rechteckigen Bereich des Zielbildes an Position (dst_x,dst_y). Es ist eine eingebaute Funktion in PHP.

<?php
// File and new size
$filename = 'panda.jpeg';
$percent = 0.5;

// Content type
header('Content-Type: image/jpeg');

// Get new sizes
list($width, $height, $type) = getimagesize($filename);
$newwidth = $width * $percent;
$newheight = $height * $percent;
$type = $list[2];
echo $type;
// Load
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);

// Resize
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

// Output
imagejpeg($thumb,'new.jpeg');
?>

Eingabebild:

php Bildgröße ändern - Originalbild

Ausgabe_Bild:

php Bildgröße ändern

Wie oben besprochen, akzeptiert die Funktion imagecopyresize() zehn Parameter, die unten aufgeführt sind.

Parameter Erläuterung
$dst_image Die Zielbildressource
$src_image Die Quellbildressource
$dst_x Die x-Koordinate des Zielpunkts
$dst_y Die y-Koordinate des Zielpunkts
$src_x Die x-Koordinate des Quellpunkts
$src_y Die y-Koordinate des Quellpunkts
$dst_w Die Zielbreite
$dst_h Die Zielhöhe
$src_w Die Quellbreite
$src_h Die Quellhöhe

Es gibt den booleschen Wert TRUE bei Erfolg oder FALSE bei Fehler zurück.

imagecopyresampled() in PHP

imagecopyresampled() kopiert einen länglichen Teil eines Bildes in andere, nahtlos interpolierende Pixelwerte, um die Dimension eines Bildes zu reduzieren und ein hohes Maß an Klarheit beizubehalten.

Es funktioniert ähnlich wie die Funktion imagecopyresized(), mit dem zusätzlichen Vorteil, dass das Bild zusätzlich zur Größenänderung abgetastet wird.

<?php
// The file
$filename = 'panda.jpeg';
$percent = 2;

// Content type
header('Content-Type: image/jpeg');

// Get new dimensions
list($width, $height) = getimagesize($filename);
$new_width = $width * $percent;
$new_height = $height * $percent;

// Resample
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

// Output
imagejpeg($image_p, 'resampled1.jpeg', 100);
?>

Eingabebild:

php Bildgröße ändern - Originalbild

Ausgabe_Bild:

php Bildgröße ändern

Die Funktion imagecopyresampled() akzeptiert zehn verschiedene Parameter.

Parameter Erläuterung
$image_p Es bestimmt das Zielbild.
$image Es bestimmt das Quellbild.
$x_dest Es bestimmt die x-Koordinate des Zielbildes.
$y_dest Es bestimmt die y-Koordinate des Zielbildes.
$x_src Es bestimmt die x-Koordinate des Quellbildes.
$y_src Es bestimmt die y-Koordinate des Quellbildes.
$wid_dest Es bestimmt die Breite des neuen Bildes.
$hei_dest Es bestimmt die Höhe des neuen Bildes.
$wid_src Es bestimmt die Breite des alten Bildes.
$wid_src Es bestimmt die Höhe des alten Bildes.

Hinweis: Wir können auch proportional resampling machen, was möglich ist, indem wir Breite und Höhe des dest_image anstelle von Prozent angeben.

imagescale() in PHP

Sie geben die Größe an, anstatt die Breite oder Höhe des neuesten Bildes zu definieren. Wenn Sie möchten, dass die neue Bildgröße die Hälfte des ersten Bildes beträgt, stellen Sie die Größe auf 0,8 ein. Hier ist der Beispielcode, um ein Bild um einen bestimmten Faktor zu skalieren, während das Verhältnis beibehalten wird.

Wir multiplizieren die ursprüngliche Breite und Höhe des Bildes mit dem angegebenen Maßstab innerhalb der Funktion scale image().

hier ist sein beispiel:

<?php
    
function load_image($filename, $type) {

        if( $type == IMAGETYPE_JPEG ) {
            $image = imagecreatefromjpeg($filename);

        }
        elseif( $type == IMAGETYPE_PNG ) {
            $image = imagecreatefrompng($filename);
           
        }
        elseif( $type == IMAGETYPE_GIF ) {
            $image = imagecreatefromgif($filename);
            
        }
        
        return $image;
    }
function scale_image($scale, $image, $width, $height) {
    $new_width = $width * $scale;
    $new_height = $height * $scale;
    return resize_image($new_width, $new_height, $image, $width, $height);
    
}
function resize_image($new_width, $new_height, $image, $width, $height) {
    $image12 = 'hello.jpeg';
    $new_imag = imagecreatetruecolor($new_width, $new_height);
    imagecopyresampled($new_imag, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
    
    return imagejpeg($new_imag, $image12);
    }


$filename = "panda.jpeg";
list($width, $height, $type) = getimagesize($filename);
$old_image = load_image($filename, $type);
$image_scaled = scale_image(0.8, $old_image, $width, $height);
?>

Eingabebild:

php Bildgröße ändern - Originalbild

Ausgabe_Bild:

php Bildgröße ändern

Abgesehen davon verfügt PHP über eine integrierte Funktion, mit der Sie ein Bild auf die angegebene Breite und Höhe skalieren können.

Siehe Beispielcode.

<?php
    
$out_image = "sca.jpeg";
$image_name ="panda.jpeg";
     
// Load image file
$image = imagecreatefromjpeg($image_name);
  
// Use imagescale() function to scale the image
$img = imagescale( $image, 500, 400 );
  

header("Content-type: image/jpeg");
imagejpeg($img,$out_image);
  
?>

Eingabebild:

php Bildgröße ändern - Originalbild

Ausgabe_Bild:

php Bildgröße ändern

Verwandter Artikel - PHP Image