I have an image $file ( eg ../image.jpg )
which has a mime type $type
How can I output it to the browser?
I have an image $file ( eg ../image.jpg )
which has a mime type $type
How can I output it to the browser?
For the next guy or gal hitting this problem, here's what worked for me:
ob_start();
header('Content-Type: '.$mimetype);
ob_end_clean();
$fp = fopen($fullyQualifiedFilepath, 'rb');
fpassthru($fp);
exit;
You need all of that, and only that. If your mimetype varies, have a look at PHP's mime_content_type($filepath)
(Expanding on the accepted answer...)
I needed to:
jpg image and an animated gif, and, I accomplished this by creating a "secondary" .htaccess file in the sub-folder where the images are located.
The file contains only one line:
AddHandler application/x-httpd-lsphp .jpg .jpeg .gif
In the same folder, I placed the two 'original' image files (we'll call them orig.jpg and orig.gif), as well as two variations of the [simplified] script below (saved as myimage.jpg and myimage.gif)...
<?php
error_reporting(0); //hide errors (displaying one would break the image)
//get user IP and the pseudo-image's URL
if(isset($_SERVER['REMOTE_ADDR'])) {$ip =$_SERVER['REMOTE_ADDR'];}else{$ip= '(unknown)';}
if(isset($_SERVER['REQUEST_URI'])) {$url=$_SERVER['REQUEST_URI'];}else{$url='(unknown)';}
//log the visit
require_once('connect.php'); //file with db connection info
$conn = new mysqli($servername, $username, $password, $dbname);
if (!$conn->connect_error) { //if connected then save mySQL record
$conn->query("INSERT INTO imageclicks (image, ip) VALUES ('$url', '$ip');");
$conn->close(); //(datetime is auto-added to table with default of 'now')
}
//display the image
$imgfile='orig.jpg'; // or 'orig.gif'
header('Content-Type: image/jpeg'); // or 'image/gif'
header('Content-Length: '.filesize($imgfile));
header('Cache-Control: no-cache');
readfile($imgfile);
?>
The images render (or animate) normally and can be called in any of the normal ways for images (like an <img> tag), and will save a record of the visiting IP, while invisible to the user.
header("Content-type: image/png");
echo file_get_contents(".../image.png");
The first step is retrieve the image from a particular location and then store it on to a variable for that purpose we use the function file_get_contents() with the destination as the parameter. Next we set the content type of the output page as image type using the header file. Finally we print the retrieved file using echo.