因為今天想寫個遠程下載圖片的類,提前熱身寫了個php gd庫實現遠程圖片下載功能,當然curl實現更好,php gd庫實現遠程圖片下載功能主要使用gd庫的兩個函數ImageCreateFromXXX()用於產生圖片函數和ImageXXX函數,XXX表示不同圖片的副檔名,所以你要想辦法擷取遠程圖片的副檔名了,附上php代碼如下:
<?phpheader("Content-type:text/html ; charset=utf-8"); if (!empty($_POST['submit'])){ $url = $_POST['url']; $pictureName = $_POST['pictureName']; $img = getPicture($url,$pictureName); echo '<pre><img src="'.$img.'"></pre>'; }function getPicture($url,$pictureName){ if ($url == "") return false; //擷取圖片的副檔名 $info = getimagesize($url); $mime = $info['mime']; $type = substr(strrchr($mime,'/'), 1); //不同的圖片類型選擇不同的圖片產生和儲存函數 switch($type){ case 'jpeg': $img_create_func = 'imagecreatefromjpeg'; $img_save_func = 'imagejpeg'; $new_img_ext = 'jpg'; break; case 'png': $img_create_func = 'imagecreatefrompng'; $img_save_func = 'imagepng'; $new_img_ext = 'png'; break; case 'bmp': $img_create_func = 'imagecreatefrombmp'; $img_save_func = 'imagebmp'; $new_img_ext = 'bmp'; break; case 'gif': $img_create_func = 'imagecreatefromgif'; $img_save_func = 'imagegif'; $new_img_ext = 'gif'; break; case 'vnd.wap.wbmp': $img_create_func = 'imagecreatefromwbmp'; $img_save_func = 'imagewbmp'; $new_img_ext = 'bmp'; break; case 'xbm': $img_create_func = 'imagecreatefromxbm'; $img_save_func = 'imagexbm'; $new_img_ext = 'xbm'; break; default: $img_create_func = 'imagecreatefromjpeg'; $img_save_func = 'imagejpeg'; $new_img_ext = 'jpg'; } if ($pictureName == ""){ $pictureName = time().".{$new_img_ext}"; }else{ $pictureName = $pictureName.".{$new_img_ext}"; } $src_im = $img_create_func($url); //由url建立新圖片 $img_save_func($src_im, $pictureName); //輸出檔案到檔案 return $pictureName;} ?><form method="POST" action="">遠程url地址:<input type="text" name="url" size=20 /><br />檔案名稱:<input type="text" name="pictureName" size=20 /><input type="submit" name="submit" value="下載" /></form>
運行結果如下圖:(圖片自動儲存在當前檔案目錄,不明白的可以留言)