The .jpg and .jpeg Mime Type
Tutorial on delivering jpeg files with the correct mime type and headers using PHP.
Edited: 2019-12-02 20:55
The correct content-type to use for delivering jpeg image files over the HTTP protocol is image/jpeg. The standard file extension for jpeg images is .jpeg, but .jpg is also broadly supported.
A HTTP response to deliver a jpeg image can look like this:
HTTP/1.1 200 OK
content-type: image/jpeg
content-length: 39354
Note. A character-set is not needed for image files.
To use the image/jpeg Mime Type from a PHP script, use the header function:
header('content-type: image/jpeg');
// Body output after this point
Deliver JPEG files from PHP
Reading a local file into a variable can be done using file_get_contents, but this is impractical for larger files. After reading the content of a file, you can output it with echo.
While this below example works, there are many potential issues depending on the circumstances, so you should not use this without taking additional steps:
// Path to file
$file_path = '/var/www/test.jpeg';
// Obtain file size for the content-length header
$file_size = filesize($file_path);
// Read the content from the file
$jpeg_file = file_get_contents($file_path);
header('content-length: ' . $file_size);
header('content-type: image/jpeg');
echo $jpeg_file;
JPEG vs JPG
The .jpg and .jpeg are both jpeg image files. The original extension used was .jpeg, but early Windows versions used .jpg, and many now prefer the 3 letter file extension as a result.
Browsers will accept the image/jpeg Mime Type for both file types. The image/jpg Mime Type does not exist.
Instead of using jpeg images, you may want to consider using the new webp format, as it offers better compression.
Editing JPEG files
You can edit .jpeg files using an editor such as Gimp or Paint.NET.
Gimp works well in both Windows and Linux, check gimp.org for the latest version.
Paint.NET works best in Windows, find it here: getpaint.net.
Tell us what you think: