目录
快速解决方案
假设我们想使用PHP显示文件中的图像,这里有一个使用PHP GD扩展来实现的快速解决方案。
// 设置头部为PNG图像类型 header('Content-Type: image/png'); // 使用GD从PNG图像文件初始化图像资源 $im = imagecreatefrompng($file); // 显示图像 imagepng($im); // 关闭图像资源以节省内存 imagedestroy($im);
这些PHP代码将输出图像并将其从文件显示到浏览器,就好像它是图像文件一样。
有关使用带有GD扩展名的PHP显示文件中图像的其他方法的更多详细信息,以及使用ImageMagick库,使用标签显示图像,我们将执行以下步骤。
使用 PHP 显示文件中的图像
有多种方法可以使用PHP显示图像文件中的图像。本文将指导您我们通常想要实现的两种流行方法:
- 直接向浏览器显示图像文件。
当您要使用 PHP 将图像文件直接输出到浏览器时,将使用此方法。 - 提取图像文件以生成 base64 数据,并使用
<img>
标记将其显示在浏览器上。
此方法更适合于将图像内联显示为带 标记的 base64 数据。
对于这两种方法,我们都可以在显示之前操作图像(例如,调整大小,添加水印)。
先决条件
必须安装 PHP 图像处理扩展。最受欢迎的扩展是GD和图像魔术。
- GD扩展通常是内置的,安装和启用的,在大多数虚拟主机上大多数默认的PHP安装。
- 图像魔术是一款先进的图像处理软件,比GD更好,更快,具有良好的PHP支持,但必须单独安装。现代网络托管可以安装图像魔术师,并根据要求启用。
1. 直接在浏览器上显示图像文件
要使用PHP直接向浏览器显示从文件到浏览器的图像,主要步骤如下:
- 将标题设置为图像
Content-Type
- 将图像数据提取为图像资源
- 将图像数据输出到浏览器
假设我们有一个 PNG 图像文件,步骤如下:image.png
1.1. 将标题内容类型设置为图像
这是为了告诉浏览器要显示的内容是图像。该函数将用于:header()
取决于图像扩展/mimetype,将有所不同。以下是最受欢迎的扩展:Content-Type
- 扩展名: image/png
- jpg和jpeg扩展名:image/jpeg
- 动图扩展: image/gif
提示:自动确定图像mimetype类型
我们可以使用PHP函数快速获取图像哑剧。当图像文件扩展名从实际内容mimetype错误地重命名时,它可能很有用:mime_content_type()
// 返回 image/png // 可以返回不同的(如。Image /jpeg),如果文件扩展名重命名错误 $mimetype = mime_content_type('image.png'); // 将检测到的mimetype添加到头文件中 header('Content-Type: ' . $mimetype);
1.2. 将图像数据提取为资源
我们将使用GD或图像魔术扩展之一将图像的内容提取为资源:
// 选项1:使用GD提取图像数据 $im = imagecreatefrompng('image.png'); // 选项2:使用ImageMagick提取图像数据 $im = new Imagick('image.png');
1.3. 将图像资源输出到浏览器
最后一步是将图像资源输出到浏览器,它将PHP代码显示为图像。
对于 GD 扩展:
// 使用GD显示图像资源 imagepng($im); // 另外,使用imagedestroy()来清理资源和节省内存 imagedestroy($im);
对于图像魔术库:
// 显示图像资源echo ImageMagick getImageBlob()资源 echo $im->getImageBlob(); // 另外,使用destroy()方法清理资源,节省内存 $im->destroy();
2. 提取图像并将其显示为 base64 数据
要将文件中的图像显示为带有内联标记的 base64 数据,步骤非常简单:<img>
- 以 base64 的形式提取图像数据
- 将图像数据输出到标记
<img>
以下是执行此操作的步骤。
2.1. 提取图像数据作为 base64
下面的脚本将使用函数获取图像数据并将其转换为base64。file_get_contents()
// 获取图像数据 $imageData = file_get_contents('image.png'); // 将图像数据编码为base64 $base64 = base64_encode($imageData)
2.2. 将图像数据输出到<img>标签
要输出和显示要格式化的图像 base64 数据,语法如下:<img>
Where
{$image_mime_type}
是图像的 mime 类型,我们可以使用该函数从图像文件中提取。mime_content_type(){$base64_data}
是提取的 base64 数据。
例如:
echo '<img src="data:' . mime_content_type('image.png') . ';base64,' . $base64 . '">';在呈现的浏览器页面中,图像将正确显示。