zoukankan      html  css  js  c++  java
  • php获取远程图片的两种:CURL方式和sockets方式获取远程图片

    php获取远程图片的两种:CURL方式和sockets方式获取远程图片

    方式1:sockets

    $a = "http://yi1.com.cn/content/uploadfile/201106/thum-f3ccdd27d2000e3f9255a7e3e2c4880020110622095243.jpg";

    $local = 'socket1.gif';

    $aa = getImg($a,$local);

    /*
      *@ 完整的图片地址
      *@ 要存储的文件名
     
    */
    function getImg( $url = "", $filename = "" ) {
        if(is_dir(basename($filename))) {
            echo "The Dir was not exits";
            Return false;
        }
        //去除URL连接上面可能的引号
        $url = preg_replace( '/(?:^[\'"]+|[\'"\/]+$)/', '', $url );
        if (!extension_loaded('sockets')) return false;
        //获取url各相关信息
        preg_match( '/http:\/\/([^\/\:]+(\:\d{1,5})?)(.*)/i', $url$matches );
        if (!$matchesreturn false;
        $sock = socket_create( AF_INET, SOCK_STREAM, SOL_TCP );
        if ( !@socket_connect( $sock$matches[1], $matches[2] ? substr($matches[2], 1 ) : 80 ) ) {
            return false;
        }
        //图片的相对地址
        $msg = 'GET ' . $matches[3] . " HTTP/1.1\r\n";
        //主机名称
        $msg .= 'Host: ' . $matches[1] . "\r\n";
        $msg .= 'Connection: Close' . "\r\n\r\n";
        socket_write( $sock$msg );
        $bin = '';
        while ( $tmp = socket_read( $sock, 10 ) ) {
            $bin .= $tmp;
            $tmp = '';
        }
        $bin = explode("\r\n\r\n", $bin);
        $img = $bin[1];
        $h = fopen$filename, 'wb' );
        $res = fwrite$h$img ) === false ? false : true;
        @socket_close( $sock );
        Return $res;
    }

    ///////////////////////////////////////////////////////////////////////

    来源:http://yi1.com.cn

    方式2:curl

    <?php

    $url = "http://yi1.com.cn/content/uploadfile/201106/thum-f3ccdd27d2000e3f9255a7e3e2c4880020110622095243.jpg";

    $filename = 'curl.gif';
    //http://yi1.com.cn

    getImg($url$filename);
    /*
      *@通过curl方式获取制定的图片到本地
      *@ 完整的图片地址
      *@ 要存储的文件名
     
    */
    function getImg($url = "", $filename = "") {
        if(is_dir(basename($filename))) {
            echo "The Dir was not exits";
            Return false;
        }
        //去除URL连接上面可能的引号
        $url = preg_replace( '/(?:^[\'"]+|[\'"\/]+$)/', '', $url );

        $hander = curl_init();
        $fp = fopen($filename,'wb');

        curl_setopt($hander,CURLOPT_URL,$url);
        curl_setopt($hander,CURLOPT_FILE,$fp);
        curl_setopt($hander,CURLOPT_HEADER,0);
        curl_setopt($hander,CURLOPT_FOLLOWLOCATION,1);
        //curl_setopt($hander,CURLOPT_RETURNTRANSFER,false);//以数据流的方式返回数据,当为false是直接显示出来
        curl_setopt($hander,CURLOPT_TIMEOUT,60);

        /*$options = array(
            CURLOPT_URL=> 'http://yi1.com.cn/content/uploadfile/201106/thum-f3ccdd27d2000e3f9255a7e3e2c4880020110622095243.jpg',
            CURLOPT_FILE => $fp,
            CURLOPT_HEADER => 0,
            CURLOPT_FOLLOWLOCATION => 1,
            CURLOPT_TIMEOUT => 60
        );
        curl_setopt_array($hander, $options);
        
    */

        curl_exec($hander);
        curl_close($hander);
        fclose($fp);
        Return true;
    }

    ?>

    原文:http://yi1.com.cn/posts/473
  • 相关阅读:
    接口--类似于抽象类但不是抽象类
    final
    抽象类
    static示例
    深入理解static关键字
    IDEA 出现错误:找不到或无法加载主类
    IDEA的java源码文件左边有一个红色的J
    this关键字
    构造方法、方法的重载
    访问控制符
  • 原文地址:https://www.cnblogs.com/jincon/p/2238982.html
Copyright © 2011-2022 走看看