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中简单的图形处理(经典) 在PHP中,图形处理是很常见的需求,为了使图形更加美观或者更加符合需求,我们通常需要对图形进行处理和调整。本文将介绍一些PHP中常用的图形处理方法和技巧,帮助读者更好地实现自己需要的图形。 一、生成缩略图 有时候我们需要对一张图片进行缩放处理,通常是生成一个缩略图,使得图片在浏览时不会影响用户的网络和用户体验。PHP中…

    PHP 2023年5月23日
    00
  • PHP设计模式之迭代器模式的使用

    迭代器模式是什么? 迭代器模式是一种行为型设计模式,它允许你在不暴露对象内部结构的情况下遍历其中的元素。通过该模式,你可以在使用不同集合(例如树形和线性)的对象时使用相同的代码。 迭代器模式的使用: 实现迭代器模式的第一步是要创建一个迭代器接口,它至少应该具有访问元素和返回下一个元素的方法。该接口可以根据特定需要进行扩展。在 PHP 中,我们可以使用 SPL…

    PHP 2023年5月27日
    00
  • php 数组二分法查找函数代码

    PHP中数组二分法查找函数代码: function binary_search($arr, $key) { $low = 0; $high = count($arr) – 1; while ($low <= $high) { $mid = intval(($low + $high) / 2); if ($arr[$mid] > $key) { $…

    PHP 2023年5月25日
    00
  • PHP跳转页面的几种实现方法详解

    PHP跳转页面的几种实现方法详解 在网站开发中,经常需要对用户进行页面跳转,例如:登录成功后跳转到首页,或者注册成功跳转到登录页面等等。本文将介绍几种常用的PHP跳转页面的实现方法。 1.使用header()函数跳转 在PHP中,可以使用header()函数跳转到另一个页面,具体代码如下: <?php header(‘Location: http://…

    PHP 2023年5月23日
    00
  • IIS 6 的 PHP 最佳配置方法

    下面是 “IIS 6 的 PHP 最佳配置方法” 的完整攻略: 一、安装 PHP 首先,需要从 PHP 官方网站下载 PHP 的 Windows 版本,选择对应的线程(32位或64位)和版本号进行下载。下载完成后,解压到指定的目录,并配置环境变量。 二、安装 IIS 6 ISAPI 扩展 打开 IIS 管理器,右键单击“计算机名称”或“站点”节点,选择“属性…

    PHP 2023年5月24日
    00
  • php实现生成PDF文件的方法示例【基于FPDF类库】

    我来为你详细讲解“php实现生成PDF文件的方法示例【基于FPDF类库】”的完整攻略。 什么是FPDF类库 FPDF类库是一个使用纯PHP编写的自由类库,可以用于生成PDF文件。它提供了一组方法和属性,可以轻松创建PDF文件,并且支持许多不同的字符编码,例如UTF-8和ISO-8859-1。此外,FPDF还提供了许多可自定义的选项,例如页面大小、文本和图像位…

    PHP 2023年5月26日
    00
  • PHP加速 eAccelerator配置和使用指南

    下面就来详细讲解“PHP加速 eAccelerator配置和使用指南”的完整攻略。 什么是 eAccelerator eAccelerator是PHP的一种加速器,可以提高PHP的执行速度。eAccelerator通过缓存PHP的字节码来提高性能。如果你的网站使用PHP编写,eAccelerator可以显著提高网站的响应速度。 安装 eAccelerator…

    PHP 2023年5月27日
    00
  • php filter协议使用方法

    PHP filter协议使用方法 PHP filter协议是一种用于过滤数据的协议,可以用于过滤输入、输出和数据。本文将详细讲解PHP filter协议的使用方法,包括如何使用filter_var()函数和filter_input()函数来过滤数据。 filter_var()函数 filter_var()函数用于过滤一个变量,接受两个参数:要过滤的变量和过滤…

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