如何使用PHP显示文件中的图像

快速解决方案

假设我们想使用PHP显示文件中的图像,这里有一个使用PHP GD扩展来实现的快速解决方案。

// 设置头部为PNG图像类型
header('Content-Type: image/png'); 

// 使用GD从PNG图像文件初始化图像资源
$im = imagecreatefrompng($file);

// 显示图像
imagepng($im);

// 关闭图像资源以节省内存
imagedestroy($im);

这些PHP代码将输出图像并将其从文件显示到浏览器,就好像它是图像文件一样。

有关使用带有GD扩展名的PHP显示文件中图像的其他方法的更多详细信息,以及使用ImageMagick库,使用标签显示图像,我们将执行以下步骤。

使用 PHP 显示文件中的图像

有多种方法可以使用PHP显示图像文件中的图像。本文将指导您我们通常想要实现的两种流行方法:

  1. 直接向浏览器显示图像文件。
    当您要使用 PHP 将图像文件直接输出到浏览器时,将使用此方法。
  2. 提取图像文件以生成 base64 数据,并使用 <img> 标记将其显示在浏览器上。
    此方法更适合于将图像内联显示为带 标记的 base64 数据。

对于这两种方法,我们都可以在显示之前操作图像(例如,调整大小,添加水印)。

先决条件

必须安装 PHP 图像处理扩展。最受欢迎的扩展是GD和图像魔术。

  • GD扩展通常是内置的,安装和启用的,在大多数虚拟主机上大多数默认的PHP安装。
  • 图像魔术是一款先进的图像处理软件,比GD更好,更快,具有良好的PHP支持,但必须单独安装。现代网络托管可以安装图像魔术师,并根据要求启用。

1. 直接在浏览器上显示图像文件

要使用PHP直接向浏览器显示从文件到浏览器的图像,主要步骤如下:

  • 将标题设置为图像Content-Type
  • 将图像数据提取为图像资源
  • 将图像数据输出到浏览器

假设我们有一个 PNG 图像文件,步骤如下:image.png

1.1. 将标题内容类型设置为图像

这是为了告诉浏览器要显示的内容是图像。该函数将用于:header()

header('Content-Type: image/png');

取决于图像扩展/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>

echo '<img src="data:{$image_mime_type};base64,{$base64_data}">';

Where

  • {$image_mime_type}是图像的 mime 类型,我们可以使用该函数从图像文件中提取。mime_content_type()
  • {$base64_data}是提取的 base64 数据。

例如:

echo '<img src="data:' . mime_content_type('image.png') . ';base64,' . $base64 . '">';

在呈现的浏览器页面中,图像将正确显示。

文章链接:https://www.haah.net/archives/8466.html
文章标题:如何使用PHP显示文件中的图像
文章版权:辉哥博客 (https://www.haah.net) 所发布的内容,部分为原创文章,转载请注明来源,网络转载文章如有侵权请联系我们!
本文最后更新发布于2022年09月10日 22时07分29秒,某些文章具有时效性,若有错误或已失效,请在下方留言或联系辉哥:m@haah.net

给TA买糖
共{{data.count}}人
人已买糖
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
我是底线可爱胖!冲鸭~