1<?php 2 3namespace Mpdf\Image; 4 5class ImageTypeGuesser 6{ 7 8 /** 9 * @param string $data 10 * 11 * @return null|string 12 */ 13 public function guess($data) 14 { 15 if (in_array(substr($data, 6, 4), ['JFIF', 'Exif'], true) || strpos($data, chr(255) . chr(216)) === 0) { // 0xFF 0xD8 // mpDF 5.7.2 16 return 'jpeg'; 17 } 18 19 if (in_array(substr($data, 0, 4), ['RIFF'], true)) { 20 return 'webp'; 21 } 22 23 if (in_array(substr($data, 0, 6), ['GIF87a', 'GIF89a'], true)) { 24 return 'gif'; 25 } 26 27 if (strpos($data, chr(137) . 'PNG' . chr(13) . chr(10) . chr(26) . chr(10)) === 0) { 28 return 'png'; 29 } 30 31 if (strpos($data, chr(215) . chr(205) . chr(198) . chr(154)) === 0) { 32 return 'wmf'; 33 } 34 35 if (preg_match('/<svg.*<\/svg>/is', $data)) { 36 return 'svg'; 37 } 38 39 if (strpos($data, 'BM') === 0) { 40 return 'bmp'; 41 } 42 43 return null; 44 } 45 46} 47