2014-09-23 98 views
0

我使用下面的代码上传数据URI保存JPG图像创建上传黑色图像用PHP imagecreatefromjpeg

//width,new_width,height,new_height are set 
$tmp_filename = $_FILES['file']['tmp_name']; 
$image_p = imagecreatetruecolor($new_width, $new_height); //resample image   

if(($ext=='jpg') | ($ext=='jpeg')){ 
    //if image to be uploaded is jpg 
    $image = imagecreatefromjpeg($tmp_filename); 
} 
else{ 
    //if image to be uploaded is png 
    $image = imagecreatefrompng($tmp_filename); 
} 

//to convert to jpg 
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 

$done=imagejpeg($image_p, $output_dirrectory."/".$image_name.".jpg",95); //95% quality 

现在的问题是,当我保存图像从使用的数据生成其他任何网站URI,它会以JPG图像的形式保存在我的本地机器上。当我尝试使用以下代码上传相同的图像时,它会创建黑色图像。

我无法弄清楚问题所在。我希望解决方案在于imagecreatefromstring,但我不知道如何解决以下代码?请提出任何解决方案?

+0

我认为你需要发布更多的代码。如何提交数据以防止不起作用的情况?如果图像数据在表单发布中,那么您可能对imagecreatefromstring是正确的。但是,如果您将其作为文件上传,您可能会尝试将快捷方式上传到无法使用的图像。 – 2014-09-23 00:52:45

+0

您似乎没有设置$ width或$ height。如果它们为零,它将只是放大到没有完整的空白方块。 – 2014-09-23 01:21:45

+0

在顶部评论中提到,它们被设置...此代码与其他jpg和png文件一起使用。只是没有一些JPG文件。 – 2014-09-23 01:24:20

回答

0

尝试添加:

$width = imageSX($image); 
$height = imageSY($image); 

该呼叫之前imagecopyresampled

+0

对不起,但没有解决。 – 2014-09-23 20:06:48