php图像调整大小错误

时间:2011-04-04 06:25:48

标签: php image-processing gd

我正在尝试调整上传图片的大小。我收到错误

  

警告:imagecreatefromjpeg()[function.imagecreatefromjpeg]:gd-jpeg,libjpeg:recoverable error:第309行/home/rumdood/lib/photograph.php中JPEG文件的提前结束

     

警告:imagecreatefromjpeg()[function.imagecreatefromjpeg]:'/ home /rumdood / public_html / uploads / 13018946005603.jpg'不是309行/home/rumdood/lib/photograph.php中的有效JPEG文件

     

警告:imagecopyresampled():提供的参数不是410行/home/rumdood/lib/photograph.php中的有效图像资源

     

警告:无法修改标题信息 - 第22行/home/rumdood/application.php中已经发送的标题(在/home/rumdood/lib/photograph.php:309开始输出)

图像没有调整大小。最后一个错误是由于头功能。

第309行就像这样

$this->image['render'] = imagecreatefromjpeg( $this->s_image );

第410行就像这样

imagecopyresampled( $this->image['composite'], $this->image['render'],
                     0, 0, 0, 0, $new_width, $new_height,
                     $this->image['width'], $this->image['height'] );

我的php版本是PHP Version 5.2.6

来自phpinfo的我的GD

GD Support          enabled
GD Version          bundled (2.0.34 compatible)
FreeType Support    enabled
FreeType Linkage    with freetype
FreeType Version    2.1.9
GIF Read Support    enabled
GIF Create Support  enabled
JPG Support         enabled
PNG Support         enabled
WBMP Support        enabled
XPM Support         enabled
XBM Support         enabled

3 个答案:

答案 0 :(得分:4)

@charles 建议..两个错误都是自我解释

检查来自

的有效图片
 if($_FILES["userPicture"]["error"] == 0) {
 // File was uploaded ok, so it's ok to proceed with the filetype check.
 $uploaded_type = exif_imagetype($_FILES["userPicture"]["tmp_name"]);
 // What we have now is a number representing our file type.

 switch($uploaded_type) {
    case "1":
        $uploaded_type = "gif";
    break;
    case "2":
        $uploaded_type = "jpg";
    break;
    case "3":
        $uploaded_type = "png";
    break;
}

}


有关 imagecreatefromjpeg():gd-jpeg,libjpeg:可恢复错误:JPEG过早结束

这是php 5和gd2的问题。继承人如何解决它

  • php 4:没有行动必须正常工作
  • php 5.0 - 5.1.2 =升级到最新的php 5
  • php 5.1.3 - current =在调用imagecreatefromjpeg()
  • 之前在您的文件中声明此变量
  • ini_set('gd.jpeg_ignore_warning',1);

无法修改标题信息在页面顶部写ob_start();

参考

答案 1 :(得分:3)

错误,

  

libjpeg:可恢复的错误:JPEG文件的过早结束

  

...不是有效的JPEG文件

非常明显。您尝试使用的图像未被底层JPEG解析器识别为有效。文件很可能已损坏或被截断。

这是图像本身的问题,而不是您的代码。你的代码看起来很好。

答案 2 :(得分:2)

看起来你试图加载的图像不是真的JPG(可能有人刚刚重命名或其他东西)。尝试使用一些图像处理程序(如GIMP)重新保存它。或者如果您已将其上传到服务器,则上传时可能会出现一些错误。此外,如果文件重量超过服务器上的一个文件大小限制,它可能会被残酷地削减。

Warning: Cannot modify header information - headers already sent by (output started at /home/rumdood/lib/photograph.php:309) in /home/rumdood/application.php on line 22

您必须在代码的开头发送标头。 <?php标记之前甚至没有空格。