Fatal error: Call to undefined function imagefilter()

蹲街弑〆低调 提交于 2020-01-14 05:35:07

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!