问题
What is causing this error?
Fatal error: Call to undefined function imagefilter() in /var/www/polaroid.php on line 5
1 <?PHP
2 $img_addr = $_GET['image_address'];
3 $img = imagecreatefromjpeg($img_addr);
4
/* everything works as expected without this line */
5 imagefilter($img, IMG_FILTER_GRAYSCALE);
6
7 if ($img)
8 {
/* I moved the header function here so I can see errors in the browser.
If I leave it at the top of the file, the browser expects an image
and doesn't print the error messages. */
9 header('Content-type: image/jpeg');
10 imagejpeg($img);
11 }
12 ?>
13
This is the URL I use:
http://localhost/polaroid.php?image_address=http://mattnelsoninfo.files.wordpress.com/2008/04/ceiling_cat1.jpg
NOTE: gd is listed in the output from phpinfo().
EDIT: I'm using PHP Version 5.2.6-2ubuntu4.1
Another EDIT:
phpinfo() yields this in the gd section
gd
GD Support enabled
GD Version 2.0 or higher
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.3.7
T1Lib Support enabled
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
Thanks!
回答1:
What version of PHP are you using? It looks like imagefilter is a PHP5 function ... http://us3.php.net/manual/en/function.imagefilter.php
EDIT: Your code works on my version of PHP. For reference, here's my phpinfo:
gd
GD Support enabled
**GD Version bundled (2.0.34 compatible)**
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.1.9
T1Lib Support enabled
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled
You might want to make sure that the GD Version is bundled. I've seen installations that say GD Support is enabled but not bundled. Not sure if that makes a difference though.
回答2:
imagefilter seems to be available only if PHP is compiled agains the bundled GD library which in your case it's not (that's the difference between the bundled and enabled). Since you're using Ubuntu the version of php that you find in the repository does not have GD bundled.
回答3:
http://www.php.net/manual/en/function.imagefilter.php there is a notice:
Note: This function is only available if PHP is compiled with the bundled version of the GD library.
回答4:
Just as a 2016 update, PHP 5.3 allowed external GD to be used, but this didn't work for some reason in lucid/precise. trusty, with PHP 5.5, does have all these image functions working except imageantialias, source https://bugs.launchpad.net/ubuntu/+source/php5/+bug/74647/comments/61 (and previous comments).
来源:https://stackoverflow.com/questions/563355/fatal-error-call-to-undefined-function-imagefilter