1. 程式人生 > >抓取遠程圖片到本地,你會用什麽函數?

抓取遠程圖片到本地,你會用什麽函數?

www 解析 關閉 arr ray urn pen 你會 獲取

方式有:

<?php
function getImage($url,$filename="")
{

    if ($url == "") return false;
    if ($filename === "") {
        $ext_name = strrchr($url,‘.‘); //獲取圖片的擴展名
        if (!in_array($ext_name, [‘.gif‘, ‘.jpg‘, ‘.bmp‘, ‘.png‘])) {
            return false;
        }
        $filename = time() . $ext_name;

    }
    // 開始捕獲
    // 文件 保存路徑
    ob_start();
    /*
     * ob_start()在服務器打開一個緩沖區來保存所有的輸出。
     * 所以在任何時候使用echo ,輸出都將被加入緩沖區中,
     * 直到程序運行結束或者使用ob_flush()來結束。
     * 然後在服務器中緩沖區的內容才會發送到瀏覽器,由瀏覽器來解析顯示。
     *
     * 使用ob_start()把輸出那同輸出到緩沖區,而不是到瀏覽器。
     */
    readfile($url);
    /*
     * readfile() 函數輸出一個文件。
     *該函數讀入一個文件並寫入到輸出緩沖。
     */
    $img_date = ob_get_contents();
    /*
     * 然後用ob_get_contents得到緩沖區的數據。
     */
    ob_end_clean();
    /*
     * 函數ob_end_clean 會清除緩沖區的內容,並將緩沖區關閉,但不會輸出內容。
     */
    $size = strlen($img_date);
    //文件大小
    $local_file = fopen($filename, ‘a‘);
    fwrite($local_file, $img_date);
    fclose($local_file);
    return $filename;
}

echo getImage("http://www.mysqltutorial.org/wp-content/uploads/2008/05/mysqltutorial.gif");

另外還有:

<?php

$img = file_get_contents(‘http://www.mysqltutorial.org/wp-content/uploads/2008/05/mysqltutorial.gif‘);

file_put_contents(‘a.gif‘, $img);

echo ‘<img src="a.gif">‘;

這段抓取遠程圖片至本地在運行中360極速、火狐、谷歌、獵豹沒有出現錯誤,可以正常運行。

還有:

<?php

$img = file_get_contents(‘http://www.mysqltutorial.org/wp-content/uploads/2008/05/mysqltutorial.gif‘);

echo $img;

該段代碼在360極速瀏覽器中運行沒有出現錯誤,但是在火狐、谷歌、獵豹瀏覽器中出現了“亂碼”。

抓取遠程圖片到本地,你會用什麽函數?