Generelle Frage zu "imagecopyresized"

Vertigo21

Erfahrenes Mitglied
Hallo zusammen.

Vor kurzem habe ich mich mal in die allgemeinen Grafik-Funktionen vertieft, da man sowas ja immer mal gebrauchen kann.

Nun bin ich bei de.php.net auch auf die Funktion "imagecopyresized" gestossen. Nur verstehe ich die notwendigen Parameter nicht ganz, vor allem die zum Verändern der Bildgröße.

Die letzten beiden Parameter sind ja für die Größenänderung verantwortlich. Nehmen wir mal an wir haben ein Bild von 128x128 Pixeln. Wenn ich jetzt bei diesen Parametern 64 und 64 angebe, müsste, laut Logik, das Bild ja kleiner werden. Aber im Gegenteil: Es wird größer. Umgekehrt funktioniert es auch: Bei Angabe von 256 und 256 wird das Bild kleiner.

Kann mir das mal einer erklären?
 
NIcht wirklich , die letzten beiden Parameter geben die Bildgrösse des Ausgangsbildes an.

int dstW, int dstH, int srcW, int srcH

destination Width, destination Height, Source Width, Source Height.

Somit wär das vorletzte Paar für die neue Bildgrösse verantwortlich.
 
FipsTheThief hat gesagt.:
NIcht wirklich , die letzten beiden Parameter geben die Bildgrösse des Ausgangsbildes an.

int dstW, int dstH, int srcW, int srcH

destination Width, destination Height, Source Width, Source Height.

Somit wär das vorletzte Paar für die neue Bildgrösse verantwortlich.

Ach so? Das muss ich gleich mal ausprobieren. Bei meinen vorherigen Experimenten hatte ich den Eindruck gewonnen, dass die letzten beiden Parameter für die Größe zuständig sind.

Danke erstmal.
 
Naja die srcWidth und srcHeight gibt im Prinzip an welcher Bildausschnitt kopiert werden soll. Also wenn wir ein Bild haben von 800 x 600 hast du 2 Punkte die wichtig sind.

Der Startpunkt x,y von der oberen linken Ecke also 0,0 bis zu der Ecke rechts unten 800,600.

dstWidth,dstHeight nimmt auch 2 Punkte an. von 0,0 bis hin zu 120 , 120 meinetwegen.

Somit würde er das komplette Bild in einen Abschnitt von 120 x 120 verkleinern dabei werden aber die Propertionen nicht erhalten.Somit sollte es etwas in die Höhe gezogen werden in diesem Fall.

Oder etwas ausführlicher noch einmal ;)

int imagecopyresized ( resource dst_im, resource src_im, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH )

dstX,dstY bildet den Startpunkt für das neue Bild hier mal 0,0
srcX,srcY bildet den Startpunkt des Urspungsbildes auch 0,0

dstW,dstH ist quasi die Höhe und Weite vom Startpunkt. also 120,120 Endgrösse des neuen Bildes
solltest du als Startpunkt aber 20,40 haben dann ist der Endpunkt quasi bei 140,160 zu finden, dabei wird dann oben der Teil und zwar 20px von links und 40px von oben schwarz dargestellt , oder mit der Hintergrundfarbe des Bildes die für das neue Bild angelegt wurde.

srcW,srcH das gleiche nur für das Urspungsbild , wie viel soll vom Bild genommen werden

Die frage die ich mir nun selber Stelle , was passiert wenn der Endpunkt quasi über die Bildgrösse hinausgeht , das weiss ich nun nicht muss man eventuell mal austesten :)
 
Zuletzt bearbeitet:
Und wenn du thumbnails erstellen willst benutz:
PHP:
ImageCreateTrueColor($width, $height)
und nicht
PHP:
ImageCreate($width, $height)
Dann bleiben dir die orginal Farben erhalten. Passt jetzt zwar nicht zu deiner Frage, aber wollte dir ein bissel Arbeit ersparen, da ich damals daran verzweifelt bin.
LG.
 
Zurück