主页/PHP笔记/PHP问答/系统与文件/PHP:通过关键词从Unsplash API查找并下载照片

PHP:通过关键词从Unsplash API查找并下载照片

Bug编译狮

Bug编译狮

好的,下面是一个使用PHP和Unsplash API来查找并下载照片的示例代码。这个示例将展示如何获取随机照片、显示图片并保存到本地。

首先,确保你已经安装了cURL库,因为Unsplash API需要通过HTTP请求访问数据。你可以通过以下命令检查是否安装:

php -m | grep curl

如果没有安装,可以使用以下命令进行安装(适用于Linux系统):

sudo apt-get install php-curl

然后,你可以使用以下代码来实现查找并下载照片的功能:

<?php

// Unsplash API的URL模板
$unsplashUrl = 'https://api.unsplash.com/photos/random';

// 请求参数
$params = [
    'client_id' => 'YOUR_UNSPLASH_CLIENT_ID', // 替换为你的Unsplash客户端ID
    'orientation' => 'landscape',
    'query' => 'nature' // 替换为你想要搜索的关键字
];

// 构建完整的API URL
$url = $unsplashUrl . '?' . http_build_query($params);

// 使用cURL发起请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

// 解析JSON响应
$data = json_decode($response, true);

// 检查是否成功获取到照片信息
if ($data && isset($data['urls']['regular'])) {
    // 获取图片URL
    $imageUrl = $data['urls']['regular'];

    // 生成文件名
    $fileName = uniqid() . '.jpg';

    // 下载图片
    file_put_contents($fileName, file_get_contents($imageUrl));

    echo "照片已下载并保存为: " . $fileName;
} else {
    echo "未找到符合条件的照片";
}

?>

示例解释:

  1. 设置Unsplash API的URL模板$unsplashUrl 是Unsplash API的根URL。
  2. 请求参数$params 包含了一些必要的参数,如 client_idorientationquery。你需要替换这些值以匹配你的Unsplash账户和搜索需求。
  3. 构建完整API URL:通过将参数添加到URL末尾,构建出完整的API请求URL。
  4. 使用cURL发起请求:使用curl_init()初始化cURL会话,设置CURLOPT_URL选项为构建好的URL,并设置CURLOPT_RETURNTRANSFER选项为true以便获取响应内容。
  5. 解析JSON响应:使用json_decode()函数将JSON响应解析为PHP数组。
  6. 检查是否成功获取到照片信息:如果响应成功且包含urls.regular字段,则表示找到了符合条件的照片。
  7. 生成文件名:使用uniqid()函数生成唯一的文件名,避免覆盖现有文件。
  8. 下载图片:使用file_put_contents()函数将图片内容写入本地文件。
  9. 输出结果:根据是否成功下载照片,输出相应的消息。

请确保将YOUR_UNSPLASH_CLIENT_ID替换为你的Unsplash客户端ID。运行这段代码后,你应该能够看到一个随机的自然风光照片被下载并保存到本地。

黑板Bug讲师

黑板Bug讲师

介绍

在本教程中,我们将深入探讨如何使用Unsplash API与PHP一起搜索照片并下载它们。Unsplash提供了高质量的免费图片,由摄影师社区共享。他们的API允许开发者访问这些图像并在项目中融入它们。这对于需要动态或特定图像的应用程序、网站或甚至脚本尤其有用,这些应用可以根据用户输入或其他标准进行定制。

先决条件

一个Unsplash账户以获取API凭证(你可以免费注册)

Composer,用于依赖管理。

一种能够运行PHP(版本7.0或更高)的开发环境。

基本的PHP知识

步骤1:设置您的Unsplash API访问权限

首先,你需要在Unsplash上注册你的应用程序并获取API访问密钥。请按照以下步骤操作:

一旦您的申请被批准,您将获得一个访问密钥和一个秘密密钥。这些对于在进行API请求时的身份验证来说是必要的。

点击“新建应用”,同意条款,填写申请详情。

前往Unsplash开发者部分并登录或创建账户。

步骤 2:安装 guzzlehttp

我们将使用GuzzleHttp,这是一个PHP的HTTP客户端,来向Unsplash API发起请求。你可以通过Composer安装Guzzle:请运行以下命令:

composer require guzzlehttp/guzzle

该命令会下载GuzzleHttp及其依赖项到你的项目文件夹中。

第3步:发出第一个API请求

要与Unsplash API进行工作,我们需要使用GuzzleHttp构建一个客户端。这个客户端将管理我们对Unsplash的请求。以下是设置它的步骤:

$client = new GuzzleHttpClient();$response = $client->request('GET', 'https://api.unsplash.com/search/photos', [    'query' => [        'query' => 'keyword',        'client_id' => 'YOUR_ACCESS_KEY'    ]]);$data = json_decode($response->getBody(), true);

替换'keyword'以您感兴趣的搜索术语为准。'YOUR_ACCESS_KEY'使用Unsplash提供的实际访问密钥,此请求会根据指定的关键字搜索相关照片并返回一个包含结果的JSON对象。

步骤 4:处理结果并下载照片

当你获取到搜索结果后,可以循环遍历数据来访问单个照片。每个照片对象包含各种详情,包括不同图像尺寸的URL。以下是如何获取这些细节并下载中等大小图片的方法:

foreach ($data['results'] as $photo) {    $photoUrl = $photo['urls']['small'];    $img = file_get_contents($photoUrl);    file_put_contents('/path/to/save/image.jpg', $img);}

请确保替换'/path/to/save/image.jpg'在实际保存图片的位置,提供一段代码片段展示了如何获取每张照片的小尺寸URL,下载图片并将其保存到服务器上。

处理API速率限制

需要注意的是,Unsplash实施了服务速率限制以保护其服务。确保您的应用程序遵守这些限制。您可以检查API响应中的剩余请求数量:

$remainingRequests = $response->getHeader('X-Ratelimit-Remaining');

考虑实施缓存或在本地存储照片,以减少请求的数量。

总结/总结会议

在本教程中,我们已经介绍了如何使用PHP与Unsplash API进行交互。我们学习了设置API访问权限、使用GuzzleHttp进行请求处理、处理结果并下载图片的方法。无论您是在构建网站、开发应用程序还是需要编写脚本来自动下载图片,这些技能都将帮助您在您的PHP项目中利用Unsplash API的威力。

长工码奴1523

长工码奴1523

要在 PHP 中使用 Unsplash API 寻找并下载照片,你可以按照以下步骤操作:

  1. 首先,确保安装了 PHP 和 CURL 库。如果没有,请运行 sudo apt-get install php-curl 命令来安装。

  2. 然后,创建一个新的 PHP 文件(例如 fetch_photos.php) 并添加以下代码:

<?php

// 设置 Unsplash API URL
$unsplash_api_url = 'https://api.unsplash.com/photos/random';

// 设置随机数参数
$random_param = 'client_id=your_client_id&client_secret=your_client_secret&query=photo';

// 获取随机数参数
$random_url = $unsplash_api_url . '?' . $random_param;

// 使用 curl 请求获取数据
$response = file_get_contents($random_url);

// 解析 JSON 数据
$data = json_decode($response, true);

// 输出图片链接
echo '<a href="' . $data['urls']['raw'] . '">' . $data['urls']['full'] . '</a>';

?>

请将 <your_client_id><your_client_secret> 替换为实际的 Unsplash 客户端 ID 和客户端密钥。

  1. 将文件保存到服务器上,并重命名为 photos.php 或其他你喜欢的名字。

  2. 运行以下命令来启动服务器:

    sudo php -S localhost:8000
  3. 访问 http://localhost:8000/ 来查看结果。这应该会显示一张来自 Unsplash 的随机照片。

这个脚本首先从 Unsplash API 中获取随机的照片信息,然后解析返回的数据并将图片链接输出到页面上。请注意,你需要替换 <your_client_id><your_client_secret> 为你实际的 Unsplash 客户端 ID 和客户端密钥。