wp_get_image_mime() – Returns the real mime type of an image file.

You appear to be a bot. Output may be restricted

Description

Returns the real mime type of an image file.

This depends on exif_imagetype() or getimagesize() to determine real mime types.

Usage

$string|false = wp_get_image_mime( $file );

Parameters

$file
( string ) required – Full path to the file.

Returns

string|false The actual mime type or false if the type cannot be determined.

Source

File name: wordpress/wp-includes/functions.php
Lines:

1 to 56 of 56
function wp_get_image_mime( $file ) {
  /*
	 * Use exif_imagetype() to check the mimetype if available or fall back to
	 * getimagesize() if exif isn't available. If either function throws an Exception
	 * we assume the file could not be validated.
	 */
  try {
    if ( is_callable( 'exif_imagetype' ) ) {
      $imagetype = exif_imagetype( $file );
      $mime      = ( $imagetype ) ? image_type_to_mime_type( $imagetype ) : false;
    } elseif ( function_exists( 'getimagesize' ) ) {
      // Don't silence errors when in debug mode, unless running unit tests.
      if ( defined( 'WP_DEBUG' ) && WP_DEBUG
        && ! defined( 'WP_RUN_CORE_TESTS' )
      ) {
        // Not using wp_getimagesize() here to avoid an infinite loop.
        $imagesize = getimagesize( $file );
      } else {
        $imagesize = @getimagesize( $file );
      }

      $mime = ( isset( $imagesize['mime'] ) ) ? $imagesize['mime'] : false;
    } else {
      $mime = false;
    }

    if ( false !== $mime ) {
      return $mime;
    }

    $magic = file_get_contents( $file, false, null, 0, 12 );

    if ( false === $magic ) {
      return false;
    }

    /*
		 * Add WebP fallback detection when image library doesn't support WebP.
		 * Note: detection values come from LibWebP, see
		 * https://github.com/webmproject/libwebp/blob/master/imageio/image_dec.c#L30
		 */
    $magic = bin2hex( $magic );
    if (
      // RIFF.
      ( str_starts_with( $magic, '52494646' ) ) &&
      // WEBP.
      ( 16 === strpos( $magic, '57454250' ) )
    ) {
      $mime = 'image/webp';
    }
  } catch ( Exception $e ) {
    $mime = false;
  }

  return $mime;
}
 

 View on GitHub View on Trac