功能无法从PNG创建图像; GIF文件类型

时间:2012-02-11 01:54:14

标签: php image-processing gd

  

可能重复:
  mysql_fetch_array() expects parameter 1 to be resource, boolean given in select

这是一个函数,它应该创建一个正在上传的内容的Header图像,并将其用于一般的站点布局,方法是将其存储到指定的目录中,当重新缓存图像时,浏览器会在该目录中执行其余操作。该功能可以轻松使用JPG,事实上我需要将所有图像格式PNG / GIF / BMP转换为JPG,因为文件被重命名为header.jpg no JPEG但仅限.JPG。似乎不能很好地使用PNG文件,因为它们不会被创建到函数必须执行的任何操作中。下面我提供了功能,知道我可以做些什么来改进它并可能使它更快?

function createHeader($new_file) {

$path = "uploads/";
$image = "cache/";
$width = 800;

if(preg_match('/.(jpg|jpeg)$/', $new_file)) {  

    $im = imagecreatefromjpeg($image . $new_file); 

} else if (preg_match('/.gif$/', $new_file)) {  

    $im = imagecreatefromgif($image . $new_file);      

} else if (preg_match('/.png$/', $new_file)) {  

    $im = imagecreatefrompng($image . $new_file);   
}  

imagealphablending($im, false);
imagesavealpha($im, true);  

$ox = imagesx($im);  
$oy = imagesy($im);  

$nx = $width;  
$ny = floor($oy * ($width / $ox) ); 

$nm = imagecreatetruecolor($nx, $ny);
imagealphablending($im, false); 

imagecopyresampled($nm, $im, 0,0,0,0,$nx,$ny,$ox,$oy);      
imagealphablending($im, true);  
if(!file_exists($path)) {  
  if(!mkdir($path)) {  
       die("There was a problem. Please try again!");  
  }  
   }  

if(!is_writable($path)) die("unable to write to specified path");
imagejpeg($nm, $path . $new_file, 100);

imagedestroy($im);
imagedestroy($nm);

}

  

警告:imagecreatefromjpeg()[function.imagecreatefromjpeg]:   gd-jpeg:JPEG库报告不可恢复的错误:in   第13行的D:\ wamp \ www \ cms \ cms \ create_header.php

     

警告:imagesy()要求参数1为资源,给定布尔值   在第28行的D:\ wamp \ www \ cms \ cms \ create_header.php

     

警告:在D:\ wamp \ www \ cms \ cms \ create_header.php中分为零   第31行

     

警告:imagecreatetruecolor()[function.imagecreatetruecolor]:   D:\ wamp \ www \ cms \ cms \ create_header.php上的图像尺寸无效   第33行

     

警告:imagealphablending()期望参数1是资源,   第34行的D:\ wamp \ www \ cms \ cms \ create_header.php中给出的布尔值

     

警告:imagecopyresampled()期望参数1是资源,   第36行的D:\ wamp \ www \ cms \ cms \ create_header.php中给出的布尔值

     

警告:imagealphablending()期望参数1是资源,   第37行D:\ wamp \ www \ cms \ cms \ create_header.php中给出的布尔值

     

警告:imagejpeg()期望参数1是资源,给定布尔值   在第45行的D:\ wamp \ www \ cms \ cms \ create_header.php

     

警告:imagedestroy()期望参数1是资源,布尔值   在第47行的D:\ wamp \ www \ cms \ cms \ create_header.php中给出

     

警告:imagedestroy()期望参数1是资源,布尔值   在第48行的D:\ wamp \ www \ cms \ cms \ create_header.php中给出

1 个答案:

答案 0 :(得分:3)

解决了这个问题。问题其实很简单。当PNG | GIF图像上传时,通过$ new_file =“header.jpg”将其重命名,因为它们在PNG并且具有.JPG扩展名create_header.php时将其读作JPG。所以我的解决方案就是这个

  

在“ajaximg.php”中替换$ new_file =“header.jpg”;使用$ new_file =   “报头”。$分机;

     

$ ext是$ ext = array_pop(explode('。',   $ _FILES [ 'photoimg'] [ '名称']));

     

之后在“create_header.php”中我添加了$ new_file =“header.jpg”;如   它没有像JPG那样创建图像,而是以“header.png”和   “header.gif”;

我感谢大家的反馈:)问题解决了。它确实需要与其他人交谈以最终在代码中找到您的问题