PHP-Bibliothek zum Ändern der Größe, Skalierung und Zuschneiden von Bildern.
Wenn Sie Bilder nicht zuschneiden, in der Größe ändern und auf Ihrem Server speichern möchten, ist Gumlet.com ein kostenloser Dienst, der Bilder in Echtzeit verarbeiten und weltweit über CDN bereitstellen kann.
Dieses Paket ist über Packagist erhältlich, wobei der Anbieter und die Paket-ID mit denen dieses Repos identisch sind.
Wenn Sie Composer verwenden, fügen Sie in Ihrer Datei composer.json
Folgendes hinzu:
{
"require" : {
"gumlet/php-image-resize" : " 2.0.* "
}
}
Wenn Sie noch PHP 5.3 verwenden, installieren Sie bitte Version 1.7.0
und wenn Sie PHP 5.4 verwenden, installieren Sie bitte Version 1.8.0
dieser Bibliothek.
WebP-Unterstützung wurde mit PHP 5.6.0
hinzugefügt und die aktuelle Version der Bibliothek unterstützt dies. Wenn Probleme auftreten, verwenden Sie bitte die Version 1.9.2
dieser Bibliothek.
Für PHP-Versionen >= 7.2, 2.0.1
oder höher sollte die Version dieser Bibliothek verwendet werden.
Ansonsten:
include ' /path/to/ImageResize.php ' ;
Da diese Klasse Namespace verwendet, müssen Sie beim Instanziieren des Objekts entweder den vollständig qualifizierten Namespace verwenden:
$ image = new Gumlet ImageResize ();
Oder alias es:
use Gumlet ImageResize ;
$ image = new ImageResize ();
Hinweis: Diese Bibliothek verwendet die GD-Klasse, die die Größenänderung animierter GIF-Dateien nicht unterstützt
So skalieren Sie ein Bild, in diesem Fall auf die Hälfte seiner Größe (die Skalierung erfolgt prozentual):
$ image = new ImageResize ( ' image.jpg ' );
$ image -> scale ( 50 );
$ image -> save ( ' image2.jpg ' );
So ändern Sie die Größe eines Bildes entsprechend einer Dimension (unter Beibehaltung des Seitenverhältnisses):
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToHeight ( 500 );
$ image -> save ( ' image2.jpg ' );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToWidth ( 300 );
$ image -> save ( ' image2.jpg ' );
So ändern Sie die Größe eines Bildes entsprechend einem bestimmten Maß, unabhängig von seiner Ausrichtung (unter Beibehaltung des Seitenverhältnisses):
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToLongSide ( 500 );
$ image -> save ( ' image2.jpg ' );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToShortSide ( 300 );
$ image -> save ( ' image2.jpg ' );
So ändern Sie die Größe eines Bildes so, dass es am besten zu einem bestimmten Satz von Abmessungen passt (unter Beibehaltung des Seitenverhältnisses):
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToBestFit ( 500 , 300 );
$ image -> save ( ' image2.jpg ' );
Alle Größenänderungsfunktionen verfügen über die Option $allow_enlarge
, die standardmäßig auf false gesetzt ist. Sie können die Funktion aktivieren, indem Sie true
an eine beliebige Größenänderungsfunktion übergeben:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resize ( 500 , 300 , $ allow_enlarge = True );
$ image -> save ( ' image2.jpg ' );
Wenn Sie die Seitenverhältnisse gerne selbst verwalten möchten, können Sie die Größe direkt ändern:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resize ( 800 , 600 );
$ image -> save ( ' image2.jpg ' );
Dies führt dazu, dass Ihr Bild verzerrt wird, wenn Sie nicht dasselbe Breiten-/Höhenverhältnis wie das Quellbild verwenden.
So beschneiden Sie ein Bild:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 );
$ image -> save ( ' image2.jpg ' );
Dadurch wird das Bild so nah wie möglich an die übergebenen Abmessungen skaliert und dann der Rest zugeschnitten und zentriert.
Im obigen Beispiel wird die Größe eines Bildes mit den Maßen 400 × 600 Pixel auf 200 Pixel × 300 Pixel verkleinert. Anschließend werden oben und unten 50 Pixel abgezogen, so dass 200 Pixel × 200 Pixel übrig bleiben.
Zuschneidemodi:
Es stehen einige Optionen für den Zuschneidemodus zur Verfügung, sodass Sie auswählen können, wie Sie mit der eventuellen Überschreitung der Breite oder Höhe umgehen möchten, nachdem Sie die Größe Ihres Bildes verkleinert haben. Der standardmäßig verwendete Zuschneidemodus ist CROPCENTER
. Daher sind diese Codeteile gleichwertig:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 );
$ image -> save ( ' image2.jpg ' );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 , true , ImageResize:: CROPCENTER );
$ image -> save ( ' image2.jpg ' );
Wenn Sie ein Bild mit den Maßen 400 x 600 Pixel haben und es auf 200 x 200 Pixel zuschneiden möchten, wird die Größe des Bildes auf 200 x 300 Pixel verkleinert. Anschließend können Sie angeben, wie Sie mit den 100 Pixeln umgehen möchten, die den Zuschneidewert überschreiten Wählen Sie den Modus aus, den Sie verwenden möchten.
Wenn Sie beispielsweise den Zuschneidemodus CROPTOP
verwenden, werden 100 Pixel vom unteren Rand abgezogen, sodass Sie 200 Pixel × 200 Pixel erhalten.
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 , true , ImageResize:: CROPTOP );
$ image -> save ( ' image2.jpg ' );
Im Gegenteil, wenn Sie den Zuschneidemodus CROPBOTTOM
verwenden, werden 100 Pixel vom oberen Rand abgezogen, so dass Sie 200 Pixel × 200 Pixel erhalten.
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 , true , ImageResize:: CROPBOTTOM );
$ image -> save ( ' image2.jpg ' );
Freecrop:
Es gibt auch eine Möglichkeit, eine benutzerdefinierte Zuschneideposition zu definieren. Sie können $x und $y in der freecrop
-Methode definieren:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> freecrop ( 200 , 200 , $ x = 20 , $ y = 20 );
$ image -> save ( ' image2.jpg ' );
So laden Sie ein Bild aus einer Zeichenfolge:
$ image = ImageResize:: createFromString ( base64_decode ( ' R0lGODlhAQABAIAAAAQCBP///yH5BAEAAAEALAAAAAABAAEAAAICRAEAOw== ' ));
$ image -> scale ( 50 );
$ image -> save ( ' image.jpg ' );
Sie können das Ergebnis auch als String zurückgeben:
$ image = ImageResize:: createFromString ( base64_decode ( ' R0lGODlhAQABAIAAAAQCBP///yH5BAEAAAEALAAAAAABAAEAAAICRAEAOw== ' ));
$ image -> scale ( 50 );
echo $ image -> getImageAsString ();
Magic __toString()
wird ebenfalls unterstützt:
$ image = ImageResize:: createFromString ( base64_decode ( ' R0lGODlhAQABAIAAAAQCBP///yH5BAEAAAEALAAAAAABAAEAAAICRAEAOw== ' ));
$ image -> resize ( 10 , 10 );
echo ( string ) $ image ;
Wie oben gesehen, können Sie $image->save('image.jpg');
Um das Bild direkt im Browser zu rendern, können Sie $image->output()
aufrufen;
Beim Speichern auf der Festplatte oder bei der Ausgabe in den Browser geht das Skript von demselben Ausgabetyp wie der Eingabe aus.
Wenn Sie in einem anderen Bildtyp speichern/ausgeben möchten, müssen Sie eine (unterstützte) PHP-Konstante IMAGETYPE_
* übergeben:
IMAGETYPE_GIF
IMAGETYPE_JPEG
IMAGETYPE_PNG
Dadurch können Sie in einem anderen Typ als in der Quelle speichern:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resize ( 800 , 600 );
$ image -> save ( ' image.png ' , IMAGETYPE_PNG );
Die Eigenschaften $quality_jpg
, $quality_webp
und $quality_png
stehen Ihnen zur Konfiguration zur Verfügung:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> quality_jpg = 100 ;
$ image -> resize ( 800 , 600 );
$ image -> save ( ' image2.jpg ' );
Standardmäßig sind sie auf 85 bzw. 6 eingestellt. Weitere Informationen finden Sie in den manuellen Einträgen für imagejpeg()
und imagepng()
.
Sie können die Qualität auch direkt an die Methoden save()
, output()
und getImageAsString()
übergeben:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 );
$ image -> save ( ' image2.jpg ' , null , 100 );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToWidth ( 300 );
$ image -> output ( IMAGETYPE_PNG , 4 );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> scale ( 50 );
$ result = $ image -> getImageAsString ( IMAGETYPE_PNG , 4 );
Im obigen Beispiel übergeben wir für den Bildtyp null
, um ihn zu überspringen und die Qualität bereitzustellen. In diesem Fall wird davon ausgegangen, dass der Bildtyp mit der Eingabe übereinstimmt.
Standardmäßig ist Bildinterlacing aktiviert. Es kann deaktiviert werden, indem $interlace
auf 0
gesetzt wird:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> scale ( 50 );
$ image -> interlace = 0 ;
$ image -> save ( ' image2.jpg ' );
Bei der Ausführung von Vorgängen bleibt das Originalbild erhalten, sodass Sie Vorgänge ohne übermäßige Zerstörung verketten können.
Dies ist nützlich, um mehrere Größen zu erstellen:
$ image = new ImageResize ( ' image.jpg ' );
$ image
-> scale ( 50 )
-> save ( ' image2.jpg ' )
-> resizeToWidth ( 300 )
-> save ( ' image3.jpg ' )
-> crop ( 100 , 100 )
-> save ( ' image4.jpg ' )
;
ImageResize löst bei Fehlern eine eigene ImageResizeException aus. Sie können das abfangen oder die allgemeine Exception abfangen, die es erweitert.
Es ist nicht zu erwarten, aber sollte auf halbem Weg etwas schrecklich schief gehen, dann bemerken oder warnen wir, dass Fehler in den PHP-GD- und Bildfunktionen angezeigt werden könnten (http://php.net/manual/en/ref.image.php).
try {
$ image = new ImageResize ( null );
echo " This line will not be printed " ;
} catch ( ImageResizeException $ e ) {
echo " Something went wrong " . $ e -> getMessage ();
}
Sie können Spezialeffekte auf neue Bilder anwenden, z. B. Unschärfe oder Banner hinzufügen.
$ image = new ImageResize ( ' image.jpg ' );
// Add blure
$ image -> addFilter ( function ( $ imageDesc ) {
imagefilter ( $ imageDesc , IMG_FILTER_GAUSSIAN_BLUR );
});
// Add banner on bottom left corner
$ image18Plus = ' banner.png '
$ image -> addFilter ( function ( $ imageDesc ) use ( $ image18Plus ) {
$ logo = imagecreatefrompng ( $ image18Plus );
$ logo_width = imagesx ( $ logo );
$ logo_height = imagesy ( $ logo );
$ image_width = imagesx ( $ imageDesc );
$ image_height = imagesy ( $ imageDesc );
$ image_x = $ image_width - $ logo_width - 10 ;
$ image_y = $ image_height - $ logo_height - 10 ;
imagecopy ( $ imageDesc , $ logo , $ image_x , $ image_y , 0 , 0 , $ logo_width , $ logo_height );
});
Spiegelt ein Bild in einem bestimmten Modus. Diese Methode ist nur für PHP-Version 5.4 verfügbar.
$ flip = new ImageResize ( ' image.png ' );
$ image = imagecreatetruecolor ( 200 , 100 );
$ image -> addFilter ( function ( $ image ) {
imageflip ( $ image , IMG_FLIP_HORIZONTAL );
});
Beide Funktionen werden in der Reihenfolge verwendet, in der sie hinzugefügt wurden.
Sie können die Gamma-Farbkorrektur aktivieren, die standardmäßig deaktiviert ist.
$ image = new ImageResize ( ' image.png ' );
$ image -> gamma ( true );
https://gumlet.github.io/php-image-resize/index.html
Diese Bibliothek wird von Gumlet.com verwaltet