• 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
  • 相关阅读:
    OpenCv 109---Blob分析
    OpenCv 013---图像的翻转
    OpenCv 012---视频文件读写
    MenuExample
    OpenCv 011---像素归一化
    OpenCv 010---图像像素值统计
    OpenCv 009---色彩空间与色彩空间转换
    OpenCv 008---通道分离与合并
    OpenCv 007---像素操作的逻辑操作
    OpenCv 006---LUT的作用与用法
  • 原文地址:https://www.cnblogs.com/jincon/p/2238982.html
Copyright © 2020-2023  润新知