PHP 远端图片下载

<?php
/**
 *php实现下载远程图片到本地
 *@param $url       string      远程文件地址
 *@param $filename  string      保存后的文件名(为空时则为随机生成的文件名,否则为原文件名)
 *@param $fileType  array       允许的文件类型
 *@param $dirName   string      文件保存的路径(路径其余部分根据时间系统自动生成)
 *@param $type      int         远程获取文件的方式
 *@return           json        返回文件名、文件的保存路径
 *
 * 例子:{‘fileName‘:13668030896.jpg, ‘saveDir‘:/www/test/img/2013/04/24/}
 */
echo getImage(‘http://img.wan.renren.com/images/2013/0430/1367294093164.jpg‘, ‘‘, ‘/www/test/img/‘, array(‘jpg‘, ‘gif‘));
function getImage($url, $filename=‘‘, $dirName, $fileType, $type=0)
{
    if($url == ‘‘){return false;}
    //获取文件原文件名
    $defaultFileName = basename($url);
    //获取文件类型
    $suffix = substr(strrchr($url,‘.‘), 1);
    if(!in_array($suffix, $fileType)){
        return false;
    }
    //设置保存后的文件名
    $filename = $filename == ‘‘ ? time().rand(0,9).‘.‘.$suffix : $defaultFileName;

    //获取远程文件资源
    if($type){
        $ch = curl_init();
        $timeout = 5;
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
        $file = curl_exec($ch);
        curl_close($ch);
    }else{
        ob_start();
        readfile($url);
        $file = ob_get_contents();
        ob_end_clean();
    }
    //设置文件保存路径
    $dirName = $dirName.‘/‘.date(‘Y‘, time()).‘/‘.date(‘m‘, time()).‘/‘.date(‘d‘,time()).‘/‘;
    if(!file_exists($dirName)){
        mkdir($dirName, 0777, true);
    }
    //保存文件
    $res = fopen($dirName.$filename,‘a‘);
    fwrite($res,$file);
    fclose($res);
    return "{‘fileName‘:$filename, ‘saveDir‘:$dirName}";
}
时间: 2024-08-01 19:00:20

PHP 远端图片下载的相关文章

Linux Shell编程实战---shell实现图片下载神器

$ cat dowonload_image.sh  #!/bin/bash ######################################### #图片下载器                              # #script_name: dowonload_image.sh         # #author:weixiaoxin write by 2017-09-20   #      #########################################

iOS利用SDWebImage图片下载缓存

一.我们先来了解一下SDWebImage的使用: 1.导入框架,引入头文件: #import "UIImageView+WebCache.h" 也可以直接使用CocoaPods来引入和管理 (OC 如下) platform :ios, '7.0' pod 'SDWebImage', '~>3.8' (swift)并且要确保添加了use_frameworks,iOS版本为8.0+ platform :ios, '8.0' use_frameworks! 2.图片下载并缓存方法: /

将网页中的图片下载到本地的方法

/** * 传入要下载的图片的url列表,将url所对应的图片下载到本地 * @param urlList */ public static String downloadPicture(String urlString,String path) { URL url = null; String imgPath = null; try { url = new URL(path+urlString); // 打开URL连接 URLConnection con = url.openConnectio

Python实战:美女图片下载器,海量图片任你下载

Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知识总结.希望大家能够快速入门并学习Python这门语言. 本文是在前一部分Python基础之上Python实战:Python爬虫学习教程,获取电影排行榜,再次升级的Python网页爬虫实战课程. 1.项目概述. 利用XPath和requests模块进行网页抓取与分析,达到网页图片下载的效果. 抓爬图片地址:http://www.2c

根据网址把图片下载到服务器C#代码

ASPX页面代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="GetPictureByUrl.aspx.cs" Inherits="HoverTreeMobile.GetPictureByUrl" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtm

Picasso:一个专为Android打造的强大的图片下载和缓存库

简介 在Android应用中,图片消费了大量的资源,却为应用提供了很好的视觉体验.幸运的是,Picasso为你的应用提供了非常容易的图片加载方式--通常一行代码就可以搞定! Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView); Picasso处理了Android上图片加载的许多坑: 1)在Adapter中,处理了ImageView的循环利用和取消下载. 2)耗费最小的内存处理了复杂的图

多线程(四)之cell图片下载(SDWebImage的认识总结)

1.SDWebImage 首先这是个很有名的第三方框架,功能主要是:图片下载,图片缓存,下载进度监听和gif处理等.. 本次的目的是了解一下底层实现和框架的使用. 1.仿写SDWebImage 1.1自定义下载图片的NSOperation 实现起来很简单:思路如下: 1.我要下载图片在模拟器或者真机显示,肯定第一步就是在sb中拉一个imageview控件. 2.肯定要在控制器中设置一个全局属性的queue队列,一般是要懒加载一下,目的也就是实例化队列queue. 3.然后就是采用多线程中的NSO

iOS多图片下载

iOS多图片下载.在cell里面下载图片.做了缓存优化. (app.icon是图片地址) // 先从内存缓存中取出图片 UIImage *image = self.images[app.icon]; if (image) { // 内存中有图片 cell.imageView.image = image; } else { // 内存中没有图片 // 获得Library/Caches文件夹 NSString *cachesPath = [NSSearchPathForDirectoriesInDo

iOS边练边学--多线程练习的多图片下载 以及 使用第三方框架(SDWebImage)的多图片下载

一.自己实现多图片下载应该注意的问题 沙盒缓存的问题 程序缓存的问题 cell重复利用显示图片混乱的问题 -- 用户拖拽快,下载图片慢导致的 解决图片混乱引入NSOperation集合的问题 资源下载失败的问题(练习中没有出现过,但是一定要考虑) 1 #import "ChaosViewController.h" 2 #import "ChaosApp.h" 3 4 @interface ChaosViewController () 5 /** 模型集合 */ 6