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

方式有:php

<?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");

另外還有:mysql

<?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極速、火狐、谷歌、獵豹沒有出現錯誤,能夠正常運行。sql

還有:瀏覽器

<?php

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

echo $img;

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

相關文章
相關標籤/搜索