Allgemeine Informationen zu Elektronik, Platinen, Programmierung, PCs und mehr...

von  am  | Keine Kommentare | aktualisiert am  | 493 mal gelesen

Bilder skalieren mit PHP

   Bilder skalieren mit PHP

So leicht lassen sich Bilder mit PHP skalieren und neu abspeichern

Bilder skalieren mit PHP

Bilder ohne Grafikprogramm in einer anderen Größe abspeichern

Manchmal kommt es vor, dass man ein bereits online gestelltes Bild oder eine Grafik in einer anderen Größe braucht.
Man kann natürlich das Bild mit HTML oder auch CSS skalieren. Oder man nutzt PHP und nutzt die Funktion getimagesize(), um das für einen zu erledigen. Meistens geht das schneller als mit dem Grafikprogramm und das neue Bild muss nicht extra hochgeladen werden.
Du kannst übrigens direkt auf dieser Seite weiter unten das Skalieren von Bildern ausprobieren und dann unter dem angegebenen Link das Bild anschauen und herunterladen.

Um direkt zum Formular zur Bildskalierung zu kommen, einfach nach unten scrollen oder hier klicken.

PHP kann mit getimagesize() alle Eigenschaften eines Bildes auslesen. Diese Eigenschaften werden in der Variabel $image_attributes als Array gespeichert.
Der erste Wert enthält die Breite, der zweite Wert enthält die Höhe und der dritte Wert enthält den Dateitypen. Der vierte Wert enthält die korrekte Zeichenkette im Format 'heigt=xxx width=xxx', um das im IMG-Tag von HTML zu benutzen. Das brauchen wir hier aber nicht.

Hier mal die komplette Auflistung:
$image_attributes[0] => Breite des Bildes in Pixeln
$image_attributes[1] => Höhe des Bildes in Pixeln
$image_attributes[2] => Enthält einen numerischen Wert für den Bildtyp. (siehe Konstanten)
$image_attributes[3] => Enthält einen String für die Verwendung in HTML, leider für CSS nicht verwendbar.
$image_attributes[‘mime‘] => Enthält den MIME-Type des Bildes laut RFC.
$image_attributes[‘channels‘] => Enthält die Anzahl der Farbkanäle (also z.B. wieviel Bytes ein Pixel beansprucht).
$image_attributes[‘bits‘] => Enthält die Anzahl der Bits pro Farbkanal.

Aktuell können mit diesem Script JPG, GIF und PNG neu skaliert werden. Das wird ab Zeile 41 unterschieden, denn dort wird die neue Bilddatei erzeugt und gespeichert.
Wenn jemand Lust hat, das Script um die anderen Bilddateitypen zu erweitern, bitte ich um entsprechende Kommentare :-)
Folgende Dateitypen(Konstanten) gibt es:
GIF = 1
JPG = 2
PNG = 3
SWF = 4 -> kein Bilddateityp !!
PSD = 5
BMP = 6
TIF = 7 (intel byte order)
TIF = 8 (motorola byte order)
JPC = 9 -> JPEG2000
JP2 = 10
JPX = 11
JB2 = 12 -> kein Bilddateityp !!
SWC = 13 -> kein Bilddateityp !!
AIFF = 14
WBMP = 15
XBM = 16
ICO = 17

Natürlich ist nicht jeder Dateityp für eine Skalierung geeignet ;-)

Bei anderen Dateitypen als den ersten drei, bricht das Script in Zeile 73 ab.

Bild skalieren –die Berechnungen:

Mit $image_aspectratio = $image_width_old / $image_height_old wird dann das Seitenverhältnis berechnet, um mit diesem Wert nachher die neue Größe korrekt berechnen zu können.

Ab Zeile 22 wird je nach gewähltem $scale_mode die neue Breite und Höhe des skalierten Bildes berechnet.

Bedeutung von $scale_mode= :

-1: $image_dimension wird als neue Breite des Bildes aufgefasst.
Die Höhe wird so angepasst, dass das Seitenverhältnis des Bildes erhalten bleibt.

-2: $image_dimension wird als neue Höhe des Bildes aufgefasst.
Die Breite wird so angepasst, dass das Seitenverhältnis des Bildes erhalten bleibt.

0: $image_dimension wird als neue längste Seite des Bildes aufgefasst.
Die andere Seite wird entsprechend verkleinert, damit das Seitenverhältnis des Bildes erhalten bleibt.
Ideal für Thumbnails, die quadratisch sind.

1: $image_dimension wird als neue kürzeste Seite des Bildes aufgefasst.
Die andere Seite wird entsprechend vergrößert, damit das Seitenverhältnis des Bildes erhalten bleibt.
Ideal, wenn das Bild eine Mindestgröße nicht unterschreiten soll.

Der Aufruf der Funktion:

resizeImage ($filepath_old, $filepath_new, $image_dimension, $scale_mode)

Also zb:
$filepath_old = "../catalog/bild.jpg";
$filepath_new = "../catalog/bild_neu.jpg";
resizeImage ($filepath_old, $filepath_new, 300, $scale_mode = -1);

Hier das komplette Script, um Bilder zu skalieren:

(Bildquelle Yvonne Biondi Babycenter Schweiz)



Hier kannst du dein Bild skalieren:








Pfad zum Originalbild*:

neue Breite/Höhe in PX:

neuer Dateiname:

neue Dateiendung**:

Skalierungsmodus:


*kompletter Pfad, zb:
https://www.all4hardware4u.de/wp-content/uploads/2013/11/bild.jpg
**Achtung! Das Ändern der Dateiänderung entspricht nicht dem Exportieren zu einem anderen Dateityp!

 


Bewerte diesen Artikel, wenn du magst:
[Gesamt: 22    Durchschnitt: 4.9/5]

Kommentar verfassen

Du kannst auch mit einem deiner folgenden Profile kommentieren:



Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Du kannst folgende HTML Tags und Attribute benutzen:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title=""data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title=""data-url=""> <span class="" title=""data-url="">

green

BILDSCHIRM OFF.
SPAREN ON!

Ein dunkler Monitor verbraucht im Gegensatz zu einem hellen bis zu 20% weniger Strom.
Daher spare ich jetzt Energie für dich.

Do NOT follow this link or you will be banned from the site!