返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >在 PHP 中从 URL 保存图像
  • 629
分享到

在 PHP 中从 URL 保存图像

2024-02-27 20:02:37 629人浏览 安东尼
摘要

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

本文介绍了在 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 压缩保存图像

--结束END--

本文标题: 在 PHP 中从 URL 保存图像

本文链接: https://lsjlt.com/news/569125.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 在 PHP 中从 URL 保存图像
    本文介绍了在 PHP 中从 URL 保存图像的五种方法。 这些方法将使用 file_put_contents()、copy()、fopen()、fread()、fwrite() 和 gzdecode()...
    99+
    2024-02-27
  • PHP从 GD2 文件或 URL 新建一图像
    这篇文章将为大家详细讲解有关PHP从 GD2 文件或 URL 新建一图像,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP 从 GD2 文件或 URL 新建图像 使用 PHP 的 GD2 库,您可以...
    99+
    2024-04-02
  • PHP从 GD 文件或 URL 新建一图像
    这篇文章将为大家详细讲解有关PHP从 GD 文件或 URL 新建一图像,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。从 GD 文件或 URL 新建图像 简介 GD(图形绘制库)是 PHP 编程语言中用于创...
    99+
    2024-04-02
  • PS图像如何保存
    这篇文章主要介绍“PS图像如何保存”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“PS图像如何保存”文章能帮助大家解决问题。 当我们处理完图片之后,我们可以点击【文...
    99+
    2024-04-02
  • 在 PHP 中从 URL 获取 JSON 对象
    本文介绍如何在 PHP 中从 URL 获取 JSON 对象。 使用 file_get_contents() 函数从 PHP 中的 URL 获取 JSON 对象 我们可以使用 file_get_...
    99+
    2024-02-27
  • PHP从给定的 GD2 文件或 URL 中的部分新建一图像
    这篇文章将为大家详细讲解有关PHP从给定的 GD2 文件或 URL 中的部分新建一图像,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 : 使用 PHP 从 GD2 文件或 URL 创建图像部分 简介: P...
    99+
    2024-04-02
  • 保存图像的Matplotlib用法
    如何使用Matplotlib保存图像 Matplotlib 是一个Python的绘图库,它提供了丰富的绘图功能。保存绘制的图像是使用Matplotlib的一个常见需求,下面将介绍如何使用Matplotlib保存图像,并提供具体的...
    99+
    2024-01-13
    图像 保存
  • PHP从字符串中的图像流新建一图像
    这篇文章将为大家详细讲解有关PHP从字符串中的图像流新建一图像,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP 从字符串中的图像流新建图像 引言 在许多 PHP 场景中,例如图像处理、表单处理或从数据...
    99+
    2024-04-02
  • Matplotlib图像保存流程详解
    Matplotlib是一种用于绘制图表和图像的Python库。它提供了丰富的绘图功能,可以用于数据可视化、科学计算和机器学习等领域的应用。本文将解析Matplotlib图像保存的步骤,并提供具体的代码示例。 Matplotlib...
    99+
    2024-01-13
    图像保存 步骤解析
  • 在 Python 中从图像中提取表格
    从图像中提取表格可能是一项乏味且耗时的任务,尤其是当您有大量图像需要处理时。但是,使用正确的工具和技术,您可以自动化此过程并快速轻松地从图像中提取表格。 在本文中,我们将探讨如何使用 Python 从...
    99+
    2023-09-05
    python opencv 开发语言
  • OpenCV中图像的读取,显示与保存
        图像的读取,显示与保存 相关函数:cv2.imread()、cv2.imshow()、cv2.imwrite() 1.读入图像: 用cv2.imread()函数来读取图像,cv2.imread(路径,图像颜色空间)(其中颜色空间...
    99+
    2023-01-30
    图像 OpenCV
  • 怎么在Python中保存截图
    这期内容当中小编将会给大家带来有关怎么在Python中保存截图,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.pi...
    99+
    2023-06-14
  • PHP怎么从图像中读取文字
    这篇文章主要讲解了“PHP怎么从图像中读取文字”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP怎么从图像中读取文字”吧!Tesseract是一个能实现OCR的开源项目。你能在*Nix系统...
    99+
    2023-06-17
  • python如何保存生成的图像
    在Python中,可以使用matplotlib库来生成和保存图像。以下是保存生成的图像的步骤: 首先,确保已经安装了matplot...
    99+
    2024-04-02
  • 保存图片到MySQL&从MySQL读取图片
    🍉接上次 爬取坤坤表情包 ,这次我们直接将表情包存到MySQL数据库而不是本地。🍉 🥭1. 创建数据库 首先创建一个数据库,数据库名为ikun,表名为img,3个字段分别为id(图片...
    99+
    2023-09-14
    mysql 数据库 java
  • 在 PHP 中上传多个图像
    在我们的 PHP 应用程序中,尤其是基于用户的应用程序中,有时我们可能需要一次上传多个文件。 借助 PHP 函数和 HTML 功能,这非常容易实现。 为了使之成为可能,我们需要根据您构建代码库的方式...
    99+
    2024-02-27
  • 在 PHP 中调整图像大小
    在本教程文章中,我们将讨论在 PHP 中调整图像大小。在调整大小之前加载图像在调整图像大小之前,我们必须首先将其作为脚本中的图像资源加载。这与使用 file_get_contents() 之类的函数来获取图...
    99+
    2024-02-27
  • Android中怎么将Bitmap保存为PNG图像文件
    Android中怎么将Bitmap保存为PNG图像文件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。具体代码如下所示:public static voi...
    99+
    2023-05-30
    android bitmap
  • Android将View或文字保存成图像
    方法1 使用Drawing Cache 直接上代码吧 View view = findViewById(R.id.testview); view...
    99+
    2022-06-06
    view Android
  • Matplotlib保存图像的方法是什么
    Matplotlib保存图像的方法是使用savefig()函数。savefig()函数可以将当前绘图窗口中的内容保存为图像文件,支持多种常见的图像格式,如PNG、JPEG、SVG等。本教程操作系统:windows10系统、Python3.1...
    99+
    2023-11-22
    Matplotlib 图像
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作