[gelöst] funktionieren manche GD2-Filter nicht?

Alles, was PHP betrifft, kann hier besprochen werden.

[gelöst] funktionieren manche GD2-Filter nicht?

Postby ollo » 02. February 2007 16:39

Hi,


ich möchte verschiedene Filter auf eine Grafik anwenden, was soweit auch funktioniert. Beispielsweise kann ich IMG_FILTER_NEGATE oder IMG_FILTER_COLORIZE problemlos anwenden.

Aber IMG_FILTER_BRIGHTNESS und IMG_FILTER_CONTRAST wollen nicht laufen, die Grafik wird nicht verändert. Die Ranges stimmen und ich habe auch überprüft ob die Parameter entsprechend gefüllt sind.

XAMPP-Version ist 1.5.5, kann jemand verifizieren dass es sich dabei um ein Problem mit dieser Version handelt oder nicht?
Last edited by ollo on 02. February 2007 16:45, edited 1 time in total.
ollo
 
Posts: 85
Joined: 11. November 2004 12:29

Postby ollo » 02. February 2007 16:45

Ich habe herausgefunden woran es liegt:

Man muss bei diesen beiden Filtern aufpassen mit der Anzahl Parameter, imagefilter() erwartet zwar laut Handbuch 5 Parameter (die teilweise nicht ausgewertet werden), die passt dort jedoch nicht! Man muss zwingend den Aufruf mit imagefilter($img, IMG_FILTER_BRIGHTNESS, $brightness) oder ähnlich ausführen, mit mehr Parametern stört sich GD2/PHP daran. Bei IMG_FILTER_NEGATE ist es egal, daher bin ich nicht auf Anhieb darauf gekommen.

...also aufpassen wenn Ihr Funktionen zum Wrappen von imagefilter() schreibt, die verschiedenen Filtertypen müssen dort entsprechend gehandelt werden!
ollo
 
Posts: 85
Joined: 11. November 2004 12:29

Postby Wiedmann » 02. February 2007 21:15

erwartet zwar laut Handbuch 5 Parameter

Welches Handbuch?

Grundsätzlich gibt es 2 Parameter:
1) Imageressource
2) Filtertype

Und dann muss man halt schauen, welche und wieviel Argumente der gewählte Filtertype erwartet (Parameter 3-5).

(Sieht man ja auch schön an den 3 Beispielen im Handbuch)
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby ollo » 28. February 2007 15:34

Wiedmann wrote:
erwartet zwar laut Handbuch 5 Parameter

Welches Handbuch?


PHP Handbuch? :roll:

Grundsätzlich gibt es 2 Parameter:
1) Imageressource
2) Filtertype

Und dann muss man halt schauen, welche und wieviel Argumente der gewählte Filtertype erwartet (Parameter 3-5).

(Sieht man ja auch schön an den 3 Beispielen im Handbuch)



Die Funktion wird angegeben als:
bool imagefilter ( resource src_im, int filtertype [, int arg1 [, int arg2 [, int arg3]]] )
, was bedeutet dass die letzten 3 'optional' sind. Wobei optional in diesem Fall natürlich bedeutet, dass man die vom Filter benötigten Werte schon ausfüllen muss, zumindest wenn man ein sinnvolles Ergebnis haben möchte. Prinzipiell aktzeptiert diese Funktion aber 5 Parameter.

Normalerweise ist es in so einem Fall dann auch wurscht, ob ich beim Aufruf alle 5 angebe (evtl. mit 0 oder null gefüllt) oder nur die die ich wirklich brauche, was ja mit einigen Filtern auch funktioniert.

Allerdings wollen einige Filter auf jeden Fall die 'richtige' Anzahl Parameter haben, was das Wrappen in Objekten erschwert, darauf wollte ich hinweisen. Folgendes funktioniert also nicht, ohne dass man Probleme bekommt:

class Image {
...
public function applyFilter ($filter, $p1=0, $p2=0, $p3=0) {
imagefilter($this->data, $filter, $p1, $p2, $p3);
}
...
}
ollo
 
Posts: 85
Joined: 11. November 2004 12:29

Postby Wiedmann » 28. February 2007 16:07

PHP Handbuch?

Noch ein Tipp:
Dort immer schön die UCNs lesen ;-)
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany


Return to PHP

Who is online

Users browsing this forum: No registered users and 1 guest