//擷取上傳臨時檔案路徑$uploadedfile = $_FILES['uploadfile']['tmp_name'];//擷取源檔案資源控制代碼。接收參數為圖片路徑,返回控制代碼$source = ImageCreateFromJPEG($uploadedfile);//擷取檔案的長寬list($width,$height) = GetImageSize($uploadedfile);if ($width > $height) {$xoord = ceil(($width-$height)/2);$width = $height;} else {$yoord = ceil(($height-$width)/2);$height = $width;}//建立一個圖片。接收參數分別為寬高,返回產生的資源控制代碼$thumb = ImageCreatetruecolor(100,100);//大圖//將源檔案剪下全部域並縮小放到靶心圖表片上。前兩個為資源控制代碼 ImageCopyResampled($thumb,$source,0,0,$xoord,$yoord,100,100,$width,$height);//圖片顯示ImageJPEG($thumb,'',100);
以上是圖片剪下的過程,假定我可以直接通過$db->select|update|insert來操作資料庫,請問我要如何完善上面的代碼,把要上傳的圖片經過剪下後轉換為2進位存入mysql資料庫呢
回複內容:
//擷取上傳臨時檔案路徑$uploadedfile = $_FILES['uploadfile']['tmp_name'];//擷取源檔案資源控制代碼。接收參數為圖片路徑,返回控制代碼$source = ImageCreateFromJPEG($uploadedfile);//擷取檔案的長寬list($width,$height) = GetImageSize($uploadedfile);if ($width > $height) {$xoord = ceil(($width-$height)/2);$width = $height;} else {$yoord = ceil(($height-$width)/2);$height = $width;}//建立一個圖片。接收參數分別為寬高,返回產生的資源控制代碼$thumb = ImageCreatetruecolor(100,100);//大圖//將源檔案剪下全部域並縮小放到靶心圖表片上。前兩個為資源控制代碼 ImageCopyResampled($thumb,$source,0,0,$xoord,$yoord,100,100,$width,$height);//圖片顯示ImageJPEG($thumb,'',100);
以上是圖片剪下的過程,假定我可以直接通過$db->select|update|insert來操作資料庫,請問我要如何完善上面的代碼,把要上傳的圖片經過剪下後轉換為2進位存入mysql資料庫呢
雖然已經有人建議你不要存在資料庫裡了,不過如果你堅持的話,我還是告訴你實現方法吧,首先你要存圖片的欄位必須是blob格式的,假設你已經做好資料庫方面的準備,在代碼上你需要做如下改動
// 從最後一行開始, 用一個臨時檔案做中轉$tmp = '/tmp/' . md5(uniqid());ImageJPEG($thumb, $tmp, 100);// 把資料轉換成一個字串$str = mysql_real_escape_string(file_get_contents($tmp));// 這隻是一個測試的sql,你可以自己修改$sql = sprintf("INSERT INTO test (`blob_column`) VALUES ('%s')", $str);mysql_query($sql);// 別忘了把臨時檔案刪掉unlink($tmp);