在 PHP 中將影象編碼為 Base64

Habdul Hazeez 2024年2月15日
  1. 在 PHP 中使用 file_get_contentspathinfobase64_encode 將影象編碼為 Base64
  2. 在 PHP 中使用 file_get_contentsbase64_encode 將影象編碼為 Base64
  3. 在 PHP 中使用 base64_encodemime_content_type 將影象編碼為 Base64
  4. 使用 PHP 中的自定義函式將影象編碼為 Base64
在 PHP 中將影象編碼為 Base64

藉助 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

作者: Habdul Hazeez
Habdul Hazeez avatar Habdul Hazeez avatar

Habdul Hazeez is a technical writer with amazing research skills. He can connect the dots, and make sense of data that are scattered across different media.

LinkedIn