方法一:file_get_contents

/**-- 下载远程文件 --**/
function down_img($url){
set_time_limit(60);
if($url==""){
return false;
}
$ext=strrchr($url,".");
if($ext!=".gif" && $ext!=".jpg" && $ext!=".png" && $ext!=".jpeg"){
return false;
}
if(!file_exists($this->uploadpath)){
dir_create($this->uploadpath);
}
$filename=$this->getname($ext);
$img = file_get_contents($url);
$fp2=@fopen($this->uploadpath.$filename, "a"); //此处可加上图片存放路径
fwrite($fp2,$img);
fclose($fp2);
/*
$imgwh=getimagesize($this->uploadpath.$filename);
if($imgwh[0]>480 || $imgwh[1]>480){
$this->image->thumb($filename, 480, 480);
}*/
return $this->urlpic.$filename; //返回新的图片名称
}
/**-- 下载远程ICON .175x175-75.jpg .100x100-75.jpg 350x350-75.jpg 512x512-75.jpg --**/
function down_icon($url,$size){
if($url==""):return false;endif;
$ext='.jpg';
$num=strrpos($url,'.');
$data = substr($url, 0,$num);
$data=$data.$size; if(!file_exists($this->uploadpath)){
dir_create($this->uploadpath);
}
$filename=$this->getname($ext);
$img = file_get_contents($data);
$fp2=@fopen($this->uploadpath.$filename, "a"); //此处可加上图片存放路径
fwrite($fp2,$img);
fclose($fp2);
return $this->urlpic.$filename; //返回新的图片名称
}
/**-- 获取附件名称 @param $fileext 附件扩展名 --**/
function getname($fileext){
return date('Ymdhis').rand(100, 999).$fileext;
}

方法二:redefile

/**-- 下载远程文件 --**/
function down_img($url){
set_time_limit(60);
if($url==""){
return false;
}
$ext=strrchr($url,".");
if($ext!=".gif" && $ext!=".jpg" && $ext!=".png" && $ext!=".jpeg"){
return false;
}
if(!file_exists($this->uploadpath)){
dir_create($this->uploadpath);
}
$filename=$this->getname($ext);
ob_start(); //开启缓冲区 $opts = array(
'http'=>array(
'method'=>"GET",
'timeout'=>25,
)
);
$context = stream_context_create($opts); readfile($url, false, $context);
$img = ob_get_contents();
ob_end_clean();
$fp2=@fopen($this->uploadpath.$filename, "a"); //此处可加上图片存放路径
fwrite($fp2,$img);
fclose($fp2);
/*
$imgwh=getimagesize($this->uploadpath.$filename);
if($imgwh[0]>480 || $imgwh[1]>480){
$this->image->thumb($filename, 480, 480);
}*/
return $this->urlpic.$filename; //返回新的图片名称
}
/**-- 下载远程ICON .175x175-75.jpg .100x100-75.jpg 350x350-75.jpg 512x512-75.jpg --**/
function down_icon($url,$size){
if($url==""):return false;endif;
$ext='.jpg';
$num=strrpos($url,'.');
$data = substr($url, 0,$num);
$data=$data.$size; if(!file_exists($this->uploadpath)){
dir_create($this->uploadpath);
}
$filename=$this->getname($ext);
ob_start();
readfile($data);
$img = ob_get_contents();
ob_end_clean(); $fp2=@fopen($this->uploadpath.$filename, "a"); //此处可加上图片存放路径
fwrite($fp2,$img);
fclose($fp2); return $this->urlpic.$filename; //返回新的图片名称
}
/**-- 获取附件名称 @param $fileext 附件扩展名 --**/
function getname($fileext){
return date('Ymdhis').rand(100, 999).$fileext;
}

PHP 下载远程图片的更多相关文章

  1. php 下载远程图片 的几种方法(转)

    1.获取远程文件大小及信息的函数 function getFileSize($url){          $url = parse_url($url);          if($fp = @fso ...

  2. php下载远程图片方法总结(curl手动解析header)curl跳转问题解决

    常用方法一般有:. file_get_contents file_put_contents readfile($file) //效率很高. 一般代码: /** * 抓取远程图片 * * @param ...

  3. php下载远程图片到本地

    在使用 PHP 做简单的爬虫的时候,我们经常会遇到需要下载远程图片的需求,所以下面来简单实现这个需求1:使用curl 比如我们有下面这两张图片: $images = [ 'https://img.al ...

  4. 织梦dedecms 无法下载远程图片 fsockopen函数被禁用的解决方法

    在linux服务器上fsockopen()函数被无情的禁用了(这其实是出于安全考虑,可以理解),下载远程图片的功能就没有办法使用了.找了一些资料之后,找到了解决方法,就是用stream_socket_ ...

  5. python多线程批量下载远程图片

    python多线程使用场景:多线程采集, 以及性能测试等 . 数据库驱动类-简单封装下 mysqlDriver.py #!/usr/bin/python3 #-*- coding: utf-8 -*- ...

  6. thinkphp下载远程图片到本地

    $url="http://www.test.com/test.jpg";//图片远程地址 $local="./Upload/test/test.jpg";//下 ...

  7. php 根据URL下载远程图片、压缩包、pdf等文件到本地

    1.此方法可以下载图片.压缩包.pdf(亲测),应该所有类型的文件都可以下载到本地,可以试一下 //远程路径,名称,文件后缀 function downImgRar($url,$rename,$ext ...

  8. php中ob_get_contents、curl_multi_init、curl_init多线程下载远程图片并保存记录

    php中三种方式测试图片下载效率 原文共24张不同图,每张大小在500K以上 使用时注意调整传入数组格式以及需要下载时保存地址的路径格式等 这三种方式无需额外安装扩展,方便快捷易操作[虽然效率看结果没 ...

  9. nodejs 下载远程图片

    var express = require('express'); var request = require('request');var http = require('http');var ur ...

随机推荐

  1. android脚步---图片浏览

    简单的图片浏览器,实现图像显示与点击切换下一张 首先在main.xml里面定义一个简单的线性布局容器. <?xml version="1.0" encoding=" ...

  2. listView上拉刷新下拉加载

    xlistview_header.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLa ...

  3. [转]读取assets目录下的数据库文件

    在做Android应用的时候,不可避免要用到数据库.但是当我们把应用的apk部署到真机上的时候,已经创建好的数据库及其里边的数据是不能随着apk一起安装到真机上的. (PS:这篇博客解决了我前面博客中 ...

  4. HashSet 与HashMap底层实现

    1. HashSet底层通过包装HashMap来实现,HashSet在添加一个值的时候,实际上是将此值作为HashMap中的key来进行保存. 2. HashMap的底层实现是通过初始化化一个Entr ...

  5. javascript的 replace() 方法的使用讲解

    String.prototype.replace() The replace() method returns a new string with some or all matches of a p ...

  6. (简单) CF 44D Hyperdrive,数学。

    In a far away galaxy there are n inhabited planets, numbered with numbers from 1 to n. They are loca ...

  7. ecos的app机制

    底层->支持层->业务 底层base 数据库访问 service管理 app管理 kvstore存储 kvcache缓存 支持层 pam登录验证 dbeav数据库扩展功能 site前台 d ...

  8. 17.4.3 使用MulticastSocket实现多点广播(5)

    该类主要实现底层的网络通信功能,在该类中提供了一个broadCast()方法,该方法使用Multicast Socket将指定字符串广播到所有客户端:还提供了sendSingle()方法,该方法使用D ...

  9. iOS关于UITabView和UIAlertController,UIAlertAction以及UINavigation,值修改的传递页面推送

    关于UITabView和UIAlertController,UIAlertAction以及UINavigation,值修改的传递 集合嵌套集合的操作 声明 两个必须的的代理 实现部分代码 - (voi ...

  10. [Asp.Net Core轻量级Aop解决方案]AspectCore Project 介绍

    AspectCore Project 介绍 什么是AspectCore Project ? AspectCore Project 是适用于Asp.Net Core 平台的轻量级 Aop(Aspect- ...