文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

在 PHP 中将图像编码为 Base64

2024-02-27 21:20

关注

借助 PHP 中的多个内置函数,有很多方法可以将图像编码为 base64 格式。

这些函数包括:


在 PHP 中使用 file_get_contentspathinfobase64_encode 将图像编码为 Base64

图像应该有一个存储在变量中的定义路径,以使用 file_get_contentspathinfobase64_encode 将图像编码为 base64。

使用 pathinfo 功能读取信息。然后将结果信息传递给 file_get_contents 函数。

file_get_contents 的工作是将图像文件读入字符串。我们可以将字符串传递给 base64_encode 函数。

要显示 base64 编码的图像,连接字符串 data:image/、来自 pathinfo 的信息、字符串 ;base64 和 base64 编码的字符串。


<?php
	// Define a path for the image
	$image_path = 'xps-unsplash.jpg';

	// Check the image type
	$image_type = pathinfo($image_path, PATHINFO_EXTENSION);

	// Read the image into a string
	$data = file_get_contents($image_path);

	// Encode the image
	$base64_encode = 'data:image:/' . $image_type . ';base64,' . base64_encode($data);

	// Return the first 50 characters of the
	// base64 encoded string
	echo substr($base64_encode, 0, 50);
?>

输出:


data:image:/jpg;base64,/9j/4AAQSkZJRgABAQEASABIAAD

在 PHP 中使用 file_get_contentsbase64_encode 将图像编码为 Base64

要将图像转换为 base64,请将图像的路径直接传递给 file_get_contents 函数。

file_get_contents 函数将返回一个字符串。如果你将此字符串作为参数提供给 base64_encode 函数,将会有所帮助。


<?php
    // Define a path for the image
    $data = file_get_contents('xps-unsplash.jpg');

    // Encode the image
    $base64_encode = base64_encode($data);

    // Return the first 50 characters of the
    // base64 encoded string
    echo substr($base64_encode, 0, 50);
?>

输出:


/9j/4AAQSkZJRgABAQEASABIAAD/4gIcSUNDX1BST0ZJTEUAAQ

在 PHP 中使用 base64_encodemime_content_type 将图像编码为 Base64

使用 file_get_contents 函数读取图像路径。然后将生成的字符串转换为 base64 编码。

你可以在将图像源传递给 HTML <img> 标记中的 src 标记之前对其进行格式化。

为此,你需要将图像格式化为 data:{mime};base64,{data}。你可以从格式中推断出你需要图像 mime 类型。

你可以使用 mime_content_type 函数获取图像 mime 类型。最后,你将格式作为 <img> 标记的 src 属性的值传递。


<?php
    // Define a path for the image
    $image_path = 'xps-unsplash.jpg';

    // Read the image path and convert it to
    // base64
    $base64_encode = base64_encode(file_get_contents($image_path));

    // Prepare the image for use in an img
    // src tag
    $image_source = 'data: ' . mime_content_type($image_path) . ';base64,' . $base64_encode;

    // Display the image in the img src tag
    echo '<img src="' . $image_source . '">';
?>

输出:

在 PHP 中将图像编码为 base64


使用 PHP 中的自定义函数将图像编码为 Base64

在此函数的定义中,你可以使用诸如 file_get_contentsbase64_encodepathinfo 之类的方法来处理图像编码。

你可以使用 file_put_contents 实现缓存功能以获得更好的性能。


<?php
    function encode_html_image (
        $image_file,
        $alternate_text = NULL,
        $image_cache,
        $image_extension = NULL
    ) {
        // check if the image is not a file
        if (!is_file($image_file)) {
            return false;
        }
        // Save the image as base64 extension for
        // use as a cache
        $image_with_base64_extension = "{$image_file}.base64";
        if ($image_cache && is_file($image_with_base64_extension)) {
            // Use the cache image
            $base64_encoded_image = file_get_contents($image_with_base64_extension);
        } else {
            // Create a new base64 encoded image
            $image_binary_data = file_get_contents($image_file);
            $base64_encoded_image = base64_encode($image_binary_data);

            if ($image_cache) {
                file_put_contents($image_with_base64_extension, $base64_encoded_image);
            }
        }

        $image_extension = pathinfo($image_file, PATHINFO_EXTENSION);

        return "<img alt='{$alternate_text}' src='data:image/{$image_extension};base64,{$base64_encoded_image}' />";
    }

    $sample_image = 'xps-unsplash.jpg';
    $encoded_image = encode_html_image($sample_image, 'XPS by DELL', true);
    echo $encoded_image;
?>

输出:

在 PHP 中将图像编码为 base64

阅读原文内容投诉

免责声明:

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

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

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯