Home >Backend Development >PHP Tutorial >How can I display binary images directly in a single script without saving them to disk?

How can I display binary images directly in a single script without saving them to disk?

Susan Sarandon
Susan SarandonOriginal
2024-11-08 04:55:021101browse

How can I display binary images directly in a single script without saving them to disk?

Display Binary Images in a Single Script

Problem:

Can images be recreated and displayed directly from binary data in the same script? This involves processing the data with GD or similar tools before displaying it in an HTML image tag. The goal is to avoid saving the processed images to disk or using external scripts.

Solution:

This can be achieved using data URIs in the image source attribute. The data URI format is:

data:[<MIME-type>][;charset="<encoding>"][;base64],<data>

This PHP function creates a data URI from a file:

function data_uri($file, $mime) 
{  
  $contents = file_get_contents($file);
  $base64   = base64_encode($contents); 
  return ('data:' . $mime . ';base64,' . $base64);
}

The following code displays an image using a data URI:

echo '<img src="' . data_uri('elephant.png', 'image/png') . '" alt="An elephant" />';

Usage:

To display processed binary image data, you can use the data_uri function and output the resulting URI as the image source like this:

$imagedata1 = file_get_contents('assets/test.png');
$imagedata1 = process_using_gd_or_something($imagedata1);

echo '<img src="' . data_uri('data:image/png;base64,' . base64_encode($imagedata1)) . '" />';

This code will display the processed image directly from the binary data without using external scripts or disk storage.

The above is the detailed content of How can I display binary images directly in a single script without saving them to disk?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn