Pergunta

O que está causando esse erro?

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

Esta é a URL que eu uso:

http://localhost/polaroid.php?image_address=http://mattnelsoninfo.files.wordpress.com/2008/04/ceiling_cat1.jpg

NOTA: gd está listado na saída de phpinfo ().

EDIT: Eu estou usando PHP Versão 5.2.6-2ubuntu4.1

Outro EDIT:

phpinfo () produz isto na seção gd

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 

Obrigado!

Foi útil?

Solução

Qual versão do PHP você está usando? Parece que imagefilter é uma função PHP5 ... http: //us3.php .net / manual / en / function.imagefilter.php

EDIT: Seu código funciona na minha versão do PHP. Para referência, aqui está o meu 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

Você pode querer se certificar de que a versão GD é empacotado. Eu vi instalações que dizem Suporte GD está habilitado, mas não empacotado. Não tenho certeza se isso faz uma diferença embora.

Outras dicas

imagefilter parece estar disponíveis apenas se o PHP é compilado agains a biblioteca GD empacotada que no seu caso não é (que é a diferença entre o pacote e ativado). Desde que você está usando o Ubuntu a versão do php que você encontra no repositório não tem GD empacotada.

http://www.php.net/manual/en/function. imagefilter.php há um aviso:

Nota : Esta função só está disponível se o PHP é compilado com o versão empacotada da biblioteca GD.

Assim como uma atualização de 2016, PHP 5.3 permitiu GD externo para ser usado, mas isso não funcionou por algum motivo em lúcida / preciso. fiel, com o PHP 5.5, tem todas essas funções de imagem de trabalho, exceto imageantialias, fonte https://bugs.launchpad.net/ubuntu/+source/php5/+bug/74647/comments/61 (e comentários anteriores).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top