2015-09-14 33 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

大多数图像已经被压缩,所以不需要“进一步压缩”。

将它们存储在数据库中不是推荐的事情。只需将它们上传到服务器上的某个位置并将路径保存到该位置。