PHP 下载远程图片
方法一: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 下载远程图片的更多相关文章
- php 下载远程图片 的几种方法(转)
1.获取远程文件大小及信息的函数 function getFileSize($url){ $url = parse_url($url); if($fp = @fso ...
- php下载远程图片方法总结(curl手动解析header)curl跳转问题解决
常用方法一般有:. file_get_contents file_put_contents readfile($file) //效率很高. 一般代码: /** * 抓取远程图片 * * @param ...
- php下载远程图片到本地
在使用 PHP 做简单的爬虫的时候,我们经常会遇到需要下载远程图片的需求,所以下面来简单实现这个需求1:使用curl 比如我们有下面这两张图片: $images = [ 'https://img.al ...
- 织梦dedecms 无法下载远程图片 fsockopen函数被禁用的解决方法
在linux服务器上fsockopen()函数被无情的禁用了(这其实是出于安全考虑,可以理解),下载远程图片的功能就没有办法使用了.找了一些资料之后,找到了解决方法,就是用stream_socket_ ...
- python多线程批量下载远程图片
python多线程使用场景:多线程采集, 以及性能测试等 . 数据库驱动类-简单封装下 mysqlDriver.py #!/usr/bin/python3 #-*- coding: utf-8 -*- ...
- thinkphp下载远程图片到本地
$url="http://www.test.com/test.jpg";//图片远程地址 $local="./Upload/test/test.jpg";//下 ...
- php 根据URL下载远程图片、压缩包、pdf等文件到本地
1.此方法可以下载图片.压缩包.pdf(亲测),应该所有类型的文件都可以下载到本地,可以试一下 //远程路径,名称,文件后缀 function downImgRar($url,$rename,$ext ...
- php中ob_get_contents、curl_multi_init、curl_init多线程下载远程图片并保存记录
php中三种方式测试图片下载效率 原文共24张不同图,每张大小在500K以上 使用时注意调整传入数组格式以及需要下载时保存地址的路径格式等 这三种方式无需额外安装扩展,方便快捷易操作[虽然效率看结果没 ...
- nodejs 下载远程图片
var express = require('express'); var request = require('request');var http = require('http');var ur ...
随机推荐
- Android客户端通过socket与服务器通信
android端--Client package com.sec.chatroomandroid; import java.io.BufferedReader; import java.io.Buff ...
- Android安全讲座第九层(二) 内存dump
近来android上越来越多的应用对自身的保护机制加强了重视,主要表现在几个方面. 1 dex加壳 2 so加壳 3 dex藏在so中,在适当的时候释放. 这是技术上一个进步,并且还有一些专业的公司提 ...
- CG之菲涅尔效果简单实现
菲涅尔效果,指当光到达两种材质的接触面时,一些光在接触面的表面被反射出去,而另一部分光将发生折射穿过接触面. 现在要用shader来实现这种效果,如果要精确地描述这种底层的物理,其计算公式是非常复杂的 ...
- Python之路:堡垒机实例以及数据库操作
一.堡垒机前戏 开发堡垒机之前,先学习Python的paramiko模块,该模块基于SSH用于连接远程服务器并执行相关操作. SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: ...
- 使用Bootstrap建立网站微金所——头部
1.微金所链接:http://www.weijinsuo.com/ 2.头部分为:topbar和nav上下两个部分 (1)topbar详解 topbar使用bootstrap的栅格系统 (2)nav分 ...
- 实战3--项目开始--准备:::资源分类, 日志系统, 写BaseDao
项目资源分类: 1. package: base, dao, dao.impl, domain, service, service.impl, util, view.action 2. co ...
- createNewFile()与createTempFile()的不同
1, File 的 createNewFile() 方法: createNewFile():返回值为 boolean: 方法介绍:当且仅当不存在具有此抽象路径名指定名称的文件时, ...
- Cocos2dx 3.1.1 学习笔记整理(2):创建场景与载入图片
把之前用2.2.3的代码迁移到3.1.1真是个蛋疼的工作,话说3.1.1做的改动还真是大啊. 可以在HelloWorldScene.cpp中看到,之前的各种CCXXX都被废弃了. 例如,新建一个CCL ...
- [Unity]SQLite-C#调用
SQLite数据库-Unity操作 项目开发的时候,经常会遇到的一种需求,数据存储 离线缓存的数据类型很多,大致分成两类 字符串文本数据 多媒体数据 字符串数据的类型只有字符串,但是结构有很多: xm ...
- UVA 11149 Power of Matrix
矩阵快速幂. 读入A矩阵之后,马上对A矩阵每一个元素%10,否则会WA..... #include<cstdio> #include<cstring> #include< ...