Bildgröße in PHP ändern
- Laden Sie das Bild vor der Größenänderung
-
imagecopyresized()
in PHP -
imagecopyresampled()
in PHP -
imagescale()
in PHP
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:
Ausgabe:
Width:225
Height:225
Type:2
here is jpeg output:
Ausgabe_Bild:
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:
Ausgabe_Bild:
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:
Ausgabe_Bild:
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:
Ausgabe_Bild:
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:
Ausgabe_Bild: