因為今天想寫個遠程下載圖片的類,提前熱身寫了個php gd庫實現遠程圖片下載功能,當然curl實現更好,php gd庫實現遠程圖片下載功能主要使用gd庫的兩個函數ImageCreateFromXXX()用於生成圖片函數和ImageXXX函數,XXX表示不同圖片的擴展名,所以你要想辦法獲取遠程圖片的擴展名了,附上php代碼如下:
<?php header("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>
運行結果如下圖:(圖片自動保存在當前文件目錄,不明白的可以留言)