2011-12-26 46 views
1

我希望這是一個簡單的一個,我使用MySQL和PHP使用此代碼上傳圖片作爲BLOB類型:上傳到mySQL並使用SimpleImage PHP?

if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0) 
    { 

    $fileName = $_FILES['userfile']['name'];  
    $tmpName = $_FILES['userfile']['tmp_name']; 
    $fileSize = $_FILES['userfile']['size']; 
    $fileType = $_FILES['userfile']['type']; 

    $fp  = fopen($tmpName, 'r'); 
    $content = fread($fp, filesize($tmpName)); 
    $content = addslashes($content); 
    fclose($fp); 

    if(!get_magic_quotes_gpc()) 
    { 
     $fileName = addslashes($fileName); 
    } 

這是所有工作正常,插入到數據庫和一切。然後,我希望使用SimpleImage:http://www.white-hat-web-design.co.uk/blog/resizing-images-with-php/在上載圖像之前對圖像執行一些調整大小和壓縮的工作。我看不出如何結合說:

include('SimpleImage.php'); 
     $image = new SimpleImage(); 
     $image->load($_FILES['userfile']['tmp_name']); 
     $image->resizeToWidth(150); 
     $image->output(); 

用我現有的代碼,我想我需要做的就是$內容成爲$的形象,但我已經嘗試了一段時間,並不能找到一個辦法。任何幫助非常感謝。

快樂的聖誕節對那些喜歡聖誕節和TIA的人來說。

回答

1

您正在輸出調整大小的圖像到瀏覽器(::output()),但你沒有保存它。如果要將其存儲在數據庫中,則需要先更改臨時文件,例如通過使用SimpleImage::save()函數。

接下來,您要在上傳之前編寫想要在瀏覽器中調整圖片大小的功能。這不能用PHP完成,但只有支持JavaScript的瀏覽器才能完成。另外,PHP端的上傳處理可能會有所不同。但我不確定是否真的意味着圖像在上傳之前調整大小

另一個想法我有使用的輸出緩衝器:

if (isset($_POST['upload']) && $_FILES['userfile']['size'] > 0) 
{  
    $fileName = $_FILES['userfile']['name'];  
    $tmpName = $_FILES['userfile']['tmp_name']; 
    $fileSize = $_FILES['userfile']['size']; 
    $fileType = $_FILES['userfile']['type']; 
    $image = new SimpleImage(); 
    $image->load($_FILES['userfile']['tmp_name']); 
    $image->resizeToWidth(150); 
    ob_start(); 
    $image->output(); 
    $content = ob_get_clean(); 

    $content = addslashes($content); 
    ... 
+0

保存爲臨時圖像,然後做調整大小等它,它是你的意思嗎? – 2011-12-26 20:24:38

+0

那麼如果它是一個文件上傳,你已經有了臨時文件,所以可能你可以重用它(PHP可能不允許,但如果我是你,我會測試它是否工作)。因此調整'$ _FILES ['userfile'] ['tmp_name']'並將其保存爲相同的文件名。或者,使用輸出緩衝區和'output()',然後將緩衝區內容讀入'$ content',而不是讀取tempfile。 – hakre 2011-12-26 20:27:03

+0

TY我會給它一個旋轉,讓你知道! – 2011-12-26 20:38:02