我的编程空间,编程开发者的网络收藏夹
学习永远不晚

在 PHP 中从 URL 保存图像

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

在 PHP 中从 URL 保存图像

本文介绍了在 PHP 中从 URL 保存图像的五种方法。 这些方法将使用 file_put_contents()、copy()、fopen()、fread()、fwrite() 和 gzdecode() 等函数。


在 PHP 中使用 file_get_contents() 和 file_put_contents() 从 URL 保存图像

PHP file_get_contents() 会将文件读入字符串,而 file_put_contents() 可以将该字符串写入文件。 结合这两个功能可以让您从 URL 保存图像。

首先,使用 file_get_contents() 将 URL 中的图像转换为字符串,然后使用 file_put_contents() 将此字符串保存到文件中。 结果将是 URL 中图像的副本。

在下文中,我们使用 file_get_contents()file_put_contents() 从 Imgur 保存图像。 此外,我们将图像重命名为 01_computer_image.png,但您可以使用其他名称和有效的图像扩展名。


<?php
    // The image is from Unsplash, and we've uploaded
    // it to Imgur for this article.
    $image_url = 'https://i.imgur.com/NFyDQTj.jpeg';
    // Define the image location. Here, the location
    // is the saved_images folder.
    $image_location = 'saved_images/01_computer_image.png';
    // Use file_put_contents to grab the image from
    // the URL and place it into the image location
    // with its new name.
    if (file_put_contents($image_location, file_get_contents($image_url))) {
        echo "Image saved successfully";
    } else {
        echo "An error code, please check your code.";
    }
?>

输出结果如下:

使用 PHP file_put_contents 和 file_get_contents 从 URL 保存图像


使用 cURL 从 URL 保存图像

cURL 是使用网络协议传输数据的命令行工具。 由于图像存在于服务器的 URL 中,您可以启动 cURL 会话,将副本保存到您的计算机。

在下文中,我们有一个 cURL 会话,它将保存来自 Imgur URL 的图像。


<?php
    // Initiate a cURL request to the image, and
    // define its location.
    $curl_handler = curl_init('https://i.imgur.com/ZgpqSGm.jpeg');
    $image_location = 'saved_images/02_apples.png';
    // Open the file for writing in binary mode
    $open_image_in_binary = fopen($image_location, 'wb');
    // Define where cURL should save the image.
    curl_setopt($curl_handler, CURLOPT_FILE, $open_image_in_binary);
    curl_setopt($curl_handler, CURLOPT_HEADER, 0);
    // Lets you use this script when there is
    // redirect on the server.
    curl_setopt($curl_handler, CURLOPT_FOLLOWLOCATION, true);
    // Auto detect encoding for the response | identity
    // deflation and gzip
    curl_setopt($curl_handler, CURLOPT_ENCODING, '');
    // Execute the current cURL session.
    curl_exec($curl_handler);
    // Close the connection and
    curl_close($curl_handler);
    // Close the file pointer
    fclose($open_image_in_binary);

    // Confirm the  new image exists in the saved_images
    // folder.
    if (file_exists($image_location)) {
        echo "Image saved successfully";
    } else {
        echo "An error occurred. Please check your code";
    }
?>

输出结果:

使用 cURL 从 URL 保存图像


使用 PHP 中的 copy() 函数从 URL 保存图像

PHP copy() 函数可以将资源从一个位置复制到另一个位置。 要从 URL 保存图像,请为 copy() 提供 URL 和新位置。

为确保您拥有图像,请使用 file_exists() 检查其是否存在。


<?php
    $image_url = 'https://i.imgur.com/CcicAAl.jpeg';
    $image_location = 'saved_images/03_robot.png';
    // Use the copy() function to copy the image from
    // its Imgur URL to a new file name in the
    // saved_images folder.
    $copy_image = copy($image_url, $image_location);
    // Confirm the  new image exists in the saved_images
    // folder.
    if (file_exists($image_location)) {
        echo "Image saved successfully";
    } else {
        echo "An error occurred. Please check your code";
    }
?>

输出结果如下:

使用 PHP copy() 函数保存图像


在 PHP 中使用 fread() 和 fwrite() 从 URL 保存图像

PHP fread() 将读取打开的文件,而 fwrite() 将写入打开的文件。 知道了这一点,你可以使用 fopen() 打开图像 URL,使用 fread() 读取图像,然后你可以使用 fwrite() 保存它。

这听起来比看起来要复杂一些。 这就是为什么我们创建了一个函数来简化流程。

该功能以下列方式工作:

  1. 使用 fopen() 以读取二进制模式打开图像。
  2. 使用 fopen() 在写入二进制模式下打开图像位置。
  3. 使用 fread() 读取图像。
  4. 将图像写入图像位置。
  5. 关闭打开的图像的句柄。
  6. 关闭图像位置的句柄。

我们已经使用此功能来保存 Mac 的图片。


<?php
    // Define a custom function to grab an image
    // from a URL using fopen and fread.
    function save_image_from_URL($source, $destination) {
        $image_source = fopen($source, "rb");
        $image_location = fopen($destination, "wb");

        while ($read_file = fread($image_source, 8192)) {
            fwrite($image_location, $read_file, 8192);
        }
        fclose($image_source);
        fclose($image_location);
    }
    // Set the image URL and its new destination on
    // your system
    $image_url = 'https://i.imgur.com/XGSex5B.jpeg';
    $image_location = 'saved_images/04_Mac.png';
    // Save the image to its new destination
    $save_image = save_image_from_URL($image_url, $image_location);
    // Confirm the  new image exists in the saved_images
    // folder.
    if (file_exists($image_location)) {
        echo "Image saved successfully";
    } else {
        echo "An error occurred. Please check your code";
    }
?>

输出结果如下:

使用 PHP fread 和 fwrite 从 URL 保存图像


在 PHP 中保存 gzip 图像

如果图像采用 gzip 压缩,本文中讨论的方法可能不起作用。 作为解决方法,我们修改了第一个使用 file_put_contents()file_get_contents() 的示例。

这一次,我们获取图像标头并检查 gzip 编码。 如果为真,我们在保存之前解码图像; 否则,我们使用 PHP copy() 函数复制图像。


<?php
    // Set the image URL and its new location
    $image_url = 'https://i.imgur.com/PpJnfpL.jpeg';
    $image_location = 'saved_images/05_Application_UI.png';

    // Fetch all headers from the URL
    $image_headers = get_headers($image_url);

    // Check if content encoding is set
    $content_encoding = isset($image_headers['Content-Encoding']) ? $image_headers['Content-Encoding'] : null;

    // Set gzip decode flag
    $gzip_decode = ($content_encoding === 'gzip') ? true : false;

    // If the image is gzipped, decode it before
    // placing it in its folder.
    if ($gzip_decode) {
        file_put_contents($image_location, gzdecode(file_get_contents($image_url)));
    } else {
        copy($image_url, $image_location);
    }
    // Confirm the  new image exists in the saved_images
    // folder.
    if (file_exists($image_location)) {
        echo "Image saved successfully";
    } else {
        echo "An error occurred. Please check your code";
    }
?>

输出结果如下:

使用 Gzip 压缩保存图像

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

在 PHP 中从 URL 保存图像

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

在 PHP 中从 URL 保存图像

本文介绍了在 PHP 中从 URL 保存图像的五种方法。 这些方法将使用 file_put_contents()、copy()、fopen()、fread()、fwrite() 和 gzdecode() 等函数。在 PHP 中使用 file
在 PHP 中从 URL 保存图像
2024-02-27

在 PHP 中从 URL 获取 JSON 对象

本文介绍如何在 PHP 中从 URL 获取 JSON 对象。使用 file_get_contents() 函数从 PHP 中的 URL 获取 JSON 对象我们可以使用 file_get_contents() 和 json_decode()
在 PHP 中从 URL 获取 JSON 对象
2024-02-27

OpenCV中图像的读取,显示与保存

图像的读取,显示与保存相关函数:cv2.imread()、cv2.imshow()、cv2.imwrite()1.读入图像:用cv2.imread()函数来读取图像,cv2.imread(路径,图像颜色空间)(其中颜色空间默认为BGR彩图)
2023-01-30

怎么在Python中保存截图

这期内容当中小编将会给大家带来有关怎么在Python中保存截图,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.pi
2023-06-14

PHP怎么从图像中读取文字

这篇文章主要讲解了“PHP怎么从图像中读取文字”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP怎么从图像中读取文字”吧!Tesseract是一个能实现OCR的开源项目。你能在*Nix系统
2023-06-17

在 PHP 中调整图像大小

在本教程文章中,我们将讨论在 PHP 中调整图像大小。在调整大小之前加载图像在调整图像大小之前,我们必须首先将其作为脚本中的图像资源加载。这与使用 file_get_contents() 之类的函数来获取图像文件的内容不同。要加载文件,我们
在 PHP 中调整图像大小
2024-02-27

在 PHP 中上传多个图像

在我们的 PHP 应用程序中,尤其是基于用户的应用程序中,有时我们可能需要一次上传多个文件。 借助 PHP 函数和 HTML 功能,这非常容易实现。为了使之成为可能,我们需要根据您构建代码库的方式在我们的 HTML 文件或部分中指定表单操作
在 PHP 中上传多个图像
2024-02-27

Android中怎么将Bitmap保存为PNG图像文件

Android中怎么将Bitmap保存为PNG图像文件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。具体代码如下所示:public static void saveBitm
2023-05-30

在 PHP 中将图像编码为 Base64

借助 PHP 中的多个内置函数,有很多方法可以将图像编码为 base64 格式。这些函数包括:pathinfofile_get_contentsbase64_encodemime_content_type在 PHP 中使用 file_get
在 PHP 中将图像编码为 Base64
2024-02-27

如何在 PHP 中从一个 URL 字符串中获取参数

本文将介绍在 PHP 中从 URL 字符串中获取参数的方法。使用 parse_url() 函数使用 parse_str() 函数。使用 $_GET 变量在 PHP 中使用 parse_url() 和 parse_str() 函数从一个 UR
如何在 PHP 中从一个 URL 字符串中获取参数
2024-02-27

怎么在HTML5中使用IndexDB存储图像

本篇文章为大家展示了怎么在HTML5中使用IndexDB存储图像,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、创建或打开数据库。// IndexedDBwindow.indexedDB = wi
2023-06-09

如何在Linux上从图像和PDF中提取文本

本篇内容介绍了“如何在Linux上从图像和PDF中提取文本”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!gImageReader是Tesse
2023-06-15

Android中将View的内容保存为图像的简单实例

原理:创建一个新的Bitmap,然后再根据它来创建一个Canvas,最后调用View的draw方法将View画到Canvas上,这样得到的Bitmap就是我们想要的。代码:代码如下: public Bitmap createViewB
2022-06-06

PHP 函数在图像处理中的应用

php 提供了丰富的图像处理函数,广泛应用于操作、编辑和增强图像。这些函数包括:改变图像大小:imagecopyresized裁剪图像:imagecrop旋转图像:imagerotate添加水印:imagecopymergePHP 函数在图
PHP 函数在图像处理中的应用
2024-04-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录