2015-09-14 72 views
1

我有一個PHP腳本,它將圖片上傳到MySQL數據庫。這些圖像是在瀏覽器中拍攝的。我想在上傳前壓縮它們,但我不太確定如何壓縮上傳的數據。我現在得到的是:PHP的圖像壓縮和上傳到MySQL

if(isset($_FILES['userfile']) && $_FILES['userfile']['size'] > 0) 
{ 
    //$positiony = $_POST['posy']; 
    $fileName = $_FILES['userfile']['name']; 
    $tmpName = $_FILES['userfile']['tmp_name']; 
    $fp  = fopen($tmpName, 'r'); 
    $content = fread($fp, filesize($tmpName)); 
    $content = addslashes($content); 
    $content = imagejpeg($content,null,50); 
    fclose($fp); 
    if(!get_magic_quotes_gpc()) 
    { 
     $fileName = addslashes($fileName); 
    } 
    $query = "INSERT INTO upload (team_name, id, display, content) ". 
    "VALUES ('$team_name', 'null', '1', '$content')"; 
    mysql_query($query) or die('Error, query failed'.mysql_error()); 

    echo "<br>File $fileName uploaded<br>"; 
} 

圖片上傳工作正常,但上傳的圖片被打破。介紹imagejpeg作爲一種壓縮形式已經引起了這些問題。我應該在別的東西上使用它嗎?

+0

鬆開'addslashes()'!你認爲這會對圖像文件的內容做什麼? – RiggsFolly

+0

實際上報廢。 R.T.M,'imagejpeg()'將文件寫入瀏覽器,其返回值爲'true'或'false' **不是圖像** – RiggsFolly

+0

有沒有更好的方法來壓縮圖像?然後將其上傳到db中作爲mediumblob的表中? – Oliver

回答

0

大多數圖像已經被壓縮,所以不需要「進一步壓縮」。

將它們存儲在數據庫中不是推薦的事情。只需將它們上傳到服務器上的某個位置並將路徑保存到該位置。