奇怪的是,我無法找到關於此主題的任何信息:用戶個人資料照片。允許用戶上傳他們的個人資料照片
以下是否有PHP解決方案?
- 允許用戶上傳他們的硬盤驅動器PIC用於存儲我們的服務器
- 在縮小,如果是過大的圖像;擴大它,如果它太小(高度/寬度)
這是很容易建立自己?還是已經有一個庫了?
奇怪的是,我無法找到關於此主題的任何信息:用戶個人資料照片。允許用戶上傳他們的個人資料照片
以下是否有PHP解決方案?
這是很容易建立自己?還是已經有一個庫了?
上傳和存儲圖像,我會建議產生一個隨機文件名的圖片,而不是保持原始文件名稱。這將防止衝突並增加一些安全措施。我會建議一個很長的名字;只是隨機的數字和字母。
然後,將隨機文件名與您的用戶信息一起存儲在數據庫記錄中。這樣,您就不必擔心文件名和用戶名不同步,正如我之前所說的,有人將無法猜測Joe Schmoe的個人資料圖片是以JoeSchmoe.jpg的形式存儲的。
當你到達圖像大小調整部分時,使用下面我修改過的函數(來自PHP用戶註釋)。在你的情況下,"images/smallerpicture.jpeg"
可能會被"images/<some random name here>.jpeg"
取代。
實施例:
scaleImage("images/bigpicture.jpeg", 100, 100, "images/smallerpicture.jpeg");
功能:
function scaleImage($source, $max_width, $max_height, $destination) {
list($width, $height) = getimagesize($source);
if ($width > 150 || $height > 150) {
$ratioh = $max_height/$height;
$ratiow = $max_width/$width;
$ratio = min($ratioh, $ratiow);
// New dimensions
$newwidth = intval($ratio * $width);
$newheight = intval($ratio * $height);
$newImage = imagecreatetruecolor($newwidth, $newheight);
$exts = array("gif", "jpg", "jpeg", "png");
$pathInfo = pathinfo($source);
$ext = trim(strtolower($pathInfo["extension"]));
$sourceImage = null;
// Generate source image depending on file type
switch ($ext) {
case "jpg":
case "jpeg":
$sourceImage = imagecreatefromjpeg($source);
break;
case "gif":
$sourceImage = imagecreatefromgif($source);
break;
case "png":
$sourceImage = imagecreatefrompng($source);
break;
}
imagecopyresampled($newImage, $sourceImage, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
// Output file depending on type
switch ($ext) {
case "jpg":
case "jpeg":
imagejpeg($newImage, $destination);
break;
case "gif":
imagegif($newImage, $destination);
break;
case "png":
imagepng($newImage, $destination);
break;
}
}
}
它支持的GIF,JPG文件,和PNG格式。
很難回答這個是因爲「easy」是非常相對的術語。對於體驗PHP編碼器很容易,對於初學者來說並不那麼容易。是的,有圖像調整大小的庫。你可能要處理自己上傳的處理,它真的很容易 調整大小,你可以看看pear library here
您還應該驗證上傳的圖片是否有效可能是黑客欺騙,並禁用php或任何其他腳本執行在您存儲圖像的目錄中 – 2015-03-26 18:00:54