selective/image-type

Image type detection

1.2.0 2023-09-09 19:21 UTC

This package is auto-updated.

Last update: 2024-12-09 22:36:05 UTC


README

Image type detection library for PHP.

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

Features

  • Detection of the image type based on its content (header)
  • No dependencies
  • Very fast

Supported formats

Raster

  • ANI (Animated Cursor)
  • BMP (Windows Bitmap)
  • CUR (Cursor)
  • DICOM (Digital Imaging and Communications in Medicine)
  • GIF (Graphics Interchange Format)
  • HEIF / HEIC (High Efficiency Image File Format) / Apple iPhone photos
  • ICO (Icon)
  • JNG (JPEG Network Graphics)
  • JPEG 2000
  • JPG / JPEG (Joint Photographic Experts Group)
  • JPM (JPEG 2000 compound image)
  • MNG (Multiple-image Network Graphics)
  • PDN (PaintDotNet)
  • PGM (Portable Graymap)
  • PNG (Portable Network Graphics)
  • PPM (Portable Pixelmap)
  • PSB (Photoshop Large Document)
  • PSD (Photoshop Document)
  • TIF / TIFF (Tagged Image File Format)
  • WEBP (WebP)
  • XCF (eXperimental Computing Facility (GIMP))

Vector

  • AI (Adobe Illustrator)
  • EMF (Enhanced Metafile)
  • EMF+ (Enhanced Metafile)
  • SVG (Scalable Vector Graphics)
  • WMF (Windows Metafile Format)

Compound

  • SWF (Small Web Format, Flash)

RAW

  • 3FR (Hasselblad)
  • CR2 (Cannon)
  • CR3 (Canon)
  • DNG (Digital Negative - Adobe)
  • IIQ (Phase One)
  • ORF (Olympus)
  • PEF (Pentax)
  • RW2 (Panasonic)

HDR

  • JPEG-HDR
  • CIN (Cineon Image File Format, Kodak)
  • DPX (Digital Picture Exchange)
  • OpenEXR
  • PBM (Portable Bit Map HDR)
  • PFM (Portable Float Map)
  • Radiance HDR

Requirements

  • PHP 8.1+

Installation

composer require selective/image-type

Usage

Detect the image type of file

use Selective\ImageType\ImageTypeDetector;
use Selective\ImageType\Provider\RasterProvider;
use Selective\ImageType\Provider\HdrProvider;
use Selective\ImageType\Provider\RawProvider;
use Selective\ImageType\Provider\VectorProvider;
use SplFileObject;

$file = new SplFileObject('example.jpg');

$detector = new ImageTypeDetector();

// Add image detectors
$detector->addProvider(new HdrProvider());
$detector->addProvider(new RawProvider());
$detector->addProvider(new VectorProvider());
$detector->addProvider(new RasterProvider());

$imageType = $detector->getImageTypeFromFile($file);

// Get the image format
echo $imageType->getFormat(); // jpeg

// Get the mime type
echo $imageType->getMimeType(); // image/jpeg

Detect the image type of in-memory object

$image = new SplTempFileObject();

$image->fwrite('my file content');

$detector = new ImageTypeDetector();

// Add image detectors
$detector->addProvider(new RasterProvider());

echo $detector->getImageTypeFromFile($file)->getFormat();

Similar libraries

License

  • MIT