2013-10-24 43 views
0

怪行我有一個表格,其中有一個輸入類型的文件的人的名字是「照片」GD - imagecopyresampled:代碼

的目標是調整該用戶再進數據庫上傳照片。

主要錯誤是,當我點擊提交頁面顯示我噸的怪像這樣的代碼:

����JFIF��m���b~bs�I$��'$V�ڳ�v,HL���rr0{ �r�I4����nCT�����O���%�vw|��;��[쯧��!VOݓI&Ҽ�M춶��o�Z�ѥ��Vb���������� ۧ��b��zi8Pr�%�9 ��猞3!�Dx�,U�8t�F�cМ�X��lP� 

如果我點擊提交我做了以下說明

$fFoto=""; 

if($_FILES['foto']['error'] == UPLOAD_ERR_OK) { 

    $fFile="/upload/inserzionisti/".$id."_".$_FILES["foto"]["name"]; 
    $fFoto=$id."_".$_FILES["foto"]["name"]; 

    $percent = 0.5; 

    list($width,$height) = getimagesize("upload/inserzionisti/".$fFoto.""); 
    $new_width = $width * $percent; 
    $new_height = $height * $percent; 

    $image_p = imagecreatetruecolor($new_width,$new_height); 
    $image = imagecreatefromjpeg("upload/inserzionisti/".$fFoto.""); 

     imagecopyresampled($image_p,$image,0,0,0,0,$new_width,$new_height,$width,$height); 
    imagejpeg($image_p,null,100); 

    move_uploaded_file($_FILES["foto"]["tmp_name"],".".$fFile); 
    $sql = "UPDATE inserzionisti SET FotoUrl ='$fFoto' where Id=$id"; 

待辦事項你有什麼建議嗎?

由於

+0

'imagejpeg'使用空第二參數只是將圖像輸出到瀏覽器。這就是你所看到的。 –

+2

在'imagejpeg($ image_p,null,100)'之前''添加'header(「Content-type:image/jpeg」);''你會看到圖像。或者改變'imagejpeg()'的第二個參數來保存文件。 – Reeno

+0

確實。這個「奇怪的代碼」實際上就是圖像本身,只是格式錯誤;)線索是字母「JFIF」,它是[JPEG文件交換格式]的標頭的文件標識符(http:// en。正在輸出的wikipedia.org/wiki/JPEG_File_Interchange_Format)文件。 –

回答

0

嘗試此代碼:

$fFoto=""; 

if($_FILES['foto']['error'] == UPLOAD_ERR_OK) { 
    $fFile="/upload/inserzionisti/".$id."_".$_FILES["foto"]["name"]; 
    $fFoto=$id."_".$_FILES["foto"]["name"]; 

    $percent = 0.5; 

    list($width,$height) = getimagesize("upload/inserzionisti/".$fFoto.""); 
    $new_width = $width * $percent; 
    $new_height = $height * $percent; 

    $image_p = imagecreatetruecolor($new_width,$new_height); 
    // create the new image from the uploaded file 
    $image = imagecreatefromjpeg($_FILES["foto"]["tmp_name"]); 

    imagecopyresampled($image_p,$image,0,0,0,0,$new_width,$new_height,$width,$height); 
    // add the new path as second parameter of imagejpeg() to save the file in the specified location 
    imagejpeg($image_p,$fFile,100); 

    // the following line isn't necessary anymore 
    // move_uploaded_file($_FILES["foto"]["tmp_name"],".".$fFile); 
    $sql = "UPDATE inserzionisti SET FotoUrl ='$fFoto' where Id=$id"; 
+0

謝謝Reeno,我會試試這個! –

+0

Reeno,這是我的一次。新路徑是文件夾或文件夾+ foto?在任何情況下,沒有錯誤,但沒有保存...謝謝 –

+0

啊,對不起,我想我混淆了變量。 imagejpeg()需要新文件夾+文件名,我認爲在你的例子中是$ fFile。我編輯了代碼。 – Reeno