PHP实现下载远程图片保存到本地的方法

实现下载远程图片保存到本地的方法,可以采用PHP的curl库来实现。具体步骤如下:

步骤一:开启curl扩展

在PHP中使用curl库,需要开启curl扩展。如果你的PHP环境中没有安装curl扩展,可以在php.ini配置文件中添加如下配置:

extension=curl.so (Linux)
extension=curl.dll (Windows)

步骤二:使用curl库下载远程图片

使用curl库下载远程图片,可以使用curl_init()函数创建一个curl会话,并使用curl_setopt()函数来设置curl参数。需要设置的参数包括:

  • CURLOPT_URL:下载的远程图片的URL地址。
  • CURLOPT_RETURNTRANSFER:将响应输出到变量中而不是输出到浏览器。
  • CURLOPT_HEADER:是否将头文件的信息作为数据流输出。
  • CURLOPT_FOLLOWLOCATION:是否自动将服务器返回的header中的信息再次发送到服务器。
  • CURLOPT_AUTOREFERER:重定向时自动设置header中的Referer:信息。
  • CURLOPT_USERAGENT:模拟浏览器发送请求。

以下是示例代码:

// 创建一个curl会话
$ch = curl_init();
// 设置curl参数
curl_setopt($ch, CURLOPT_URL, '图片的URL地址');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36');
// 执行curl请求,获取响应内容
$imageContent = curl_exec($ch);
// 关闭curl会话
curl_close($ch);

以上代码中,$imageContent变量就是远程图片的内容。

步骤三:保存远程图片到本地

使用file_put_contents()函数将远程图片保存到本地,注意要为图片创建合适的存储路径。以下是示例代码:

// 创建一个存储路径
$path = '/path/to/save/image/';
if (!is_dir($path)) {
    mkdir($path, 0777, true);
}
// 获取图片的扩展名
$ext = pathinfo('图片的URL地址', PATHINFO_EXTENSION);
// 生成图片的文件名
$filename = uniqid().'.'.$ext;
// 将图片保存到本地
file_put_contents($path.$filename, $imageContent);

以上代码中,使用了uniqid()函数来生成唯一的文件名,以免重复覆盖。

示例一:下载并保存单个图片

以下示例代码演示了如何下载并保存单个图片:

// 创建一个curl会话
$ch = curl_init();
// 设置curl参数
curl_setopt($ch, CURLOPT_URL, 'https://picsum.photos/200/300.jpg');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36');
// 执行curl请求,获取响应内容
$imageContent = curl_exec($ch);
// 关闭curl会话
curl_close($ch);

// 创建一个存储路径
$path = '/path/to/save/image/';
if (!is_dir($path)) {
    mkdir($path, 0777, true);
}
// 获取图片的扩展名
$ext = pathinfo('https://picsum.photos/200/300.jpg', PATHINFO_EXTENSION);
// 生成图片的文件名
$filename = uniqid().'.'.$ext;
// 将图片保存到本地
file_put_contents($path.$filename, $imageContent);

以上示例代码中,使用了picsum.photos提供的服务来获取一张200x300像素大小的随机图片。

示例二:批量下载并保存图片

以下示例代码演示了如何批量下载并保存图片:

// 创建一个curl会话
$ch = curl_init();
// 设置curl参数
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36');

// 将要下载的图片列表
$imageList = [
    'https://picsum.photos/200/300.jpg',
    'https://picsum.photos/300/400.jpg',
    'https://picsum.photos/400/500.jpg',
    'https://picsum.photos/500/600.jpg',
];

// 循环遍历图片列表,下载并保存图片
foreach ($imageList as $imageUrl) {
    // 设置图片的URL地址
    curl_setopt($ch, CURLOPT_URL, $imageUrl);
    // 执行curl请求,获取响应内容
    $imageContent = curl_exec($ch);

    // 创建一个存储路径
    $path = '/path/to/save/image/';
    if (!is_dir($path)) {
        mkdir($path, 0777, true);
    }
    // 获取图片的扩展名
    $ext = pathinfo($imageUrl, PATHINFO_EXTENSION);
    // 生成图片的文件名
    $filename = uniqid().'.'.$ext;
    // 将图片保存到本地
    file_put_contents($path.$filename, $imageContent);
}

// 关闭curl会话
curl_close($ch);

以上示例代码中,$imageList为一个包含多个图片URL地址的数组,循环遍历数组,下载并保存图片。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP实现下载远程图片保存到本地的方法 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 隐性调用php程序的方法

    “隐性调用php程序的方法”是指在HTTP请求中,通过一些特殊的方式调用PHP程序,以达到获取目标服务器上敏感信息、执行命令甚至控制服务器等攻击目的的一类攻击手法。 常见的隐性调用PHP程序的方法有以下几种: URL重写 URL重写比较常见的应用就是伪静态,将动态URL转化为易于理解和记忆的静态URL。攻击者可以模仿伪静态的URL重写技术,将动态请求伪装成静…

    PHP 2023年5月23日
    00
  • MySQL如何快速导入数据

    MySQL是一种常用的关系型数据库管理系统,对于需要导入大量数据的情况,如何高效地完成数据导入就显得尤为重要。以下是MySQL如何快速导入数据的完整攻略。 1. 准备工作 在开始导入数据之前,需要先进行一些准备工作,包括: 确保已经创建好了要导入数据的表,表结构要与数据文件中的字段类型、数量等相同。 (可选)将要导入的数据文件转换为MySQL支持的格式,如C…

    PHP 2023年5月27日
    00
  • php 木马的分析(加密破解)

    这里是关于“php 木马的分析(加密破解)”的完整攻略,该攻略分为以下步骤: 1. 确认是否存在木马 在分析/破解 php 木马之前,首先需要确认是否真正存在一个木马。通常,可以通过以下方式来确认: 查看主机上的文件系统和进程列表,以确定是否存在异常的文件或进程。 使用反病毒软件进行检查,以捕捉已知的木马及其变种。 2. 初步分析木马 确定存在木马之后,可以…

    PHP 2023年5月23日
    00
  • 如何通过Linux命令行使用和运行PHP脚本

    使用Linux命令行运行PHP脚本是开发Web应用时非常重要的一环,本文将详细讲解如何在Linux命令行中使用和运行PHP脚本。 安装PHP解释器 在Linux服务器上使用PHP脚本,首先需要确保PHP解释器已经安装。在绝大多数Linux系统中,PHP解释器可以通过包管理器简单地进行安装,以下命令可用于Ubuntu/Debian系统的安装: sudo apt…

    PHP 2023年5月24日
    00
  • php获取网卡的MAC地址支持WIN/LINUX系统

    要在PHP中获取网卡的MAC地址,需要使用系统相关的命令或API。在Windows系统中,可以使用WMI(Windows Management Instrumentation),而在Linux系统中,可以通过执行命令行获取。下面是获取MAC地址的完整攻略: 1. 方式一:使用PHP调用WMI获取MAC地址(适用于Windows系统) Windows Mana…

    PHP 2023年5月24日
    00
  • 微信扫描二维码登录网站代码示例

    下面我将为你详细讲解“微信扫描二维码登录网站代码示例”的完整攻略。 简介 在网站中实现微信扫描二维码登录功能,需要通过微信公众平台获取到相应的AppID和AppSecret,在网站后台进行配置和开发后,用户在网站中可以通过微信扫描二维码来进行授权登录。 配置 在微信公众平台中创建一个开发者帐号,获取到AppID和AppSecret。 登录网站后台,在用户登录…

    PHP 2023年5月23日
    00
  • 判断PHP数组是否为空的代码

    判断PHP数组是否为空的代码,可以采用以下两种方式。 第一种方式:使用empty函数 empty函数用于判断一个变量是否为空,包括空数组、空字符串、0和false等等。当变量值为以下几种情况时,empty函数返回true: “” (空字符串) 0 (作为整数的0) 0.0 (作为浮点数的0) “0” (作为字符串的0) false array() (空数组)…

    PHP 2023年5月26日
    00
  • php简单复制文件的方法

    PHP是一种动态脚本语言,可以用来处理文件和目录。PHP提供了很多函数,可以用来操作文件系统。复制文件是一个常见的文件操作任务,本篇文章将讲解如何使用PHP简单复制文件的方法。 1. 使用copy()函数 PHP提供了copy()函数,可以用来将文件从一个位置复制到另一个位置。下面是copy()函数的语法: bool copy ( string $sourc…

    PHP 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部