2014-09-23 55 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