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, 6), ['GIF87a', 'GIF89a'], true)) { 20 return 'gif'; 21 } 22 23 if (strpos($data, chr(137) . 'PNG' . chr(13) . chr(10) . chr(26) . chr(10)) === 0) { 24 return 'png'; 25 } 26 27 if (strpos($data, chr(215) . chr(205) . chr(198) . chr(154)) === 0) { 28 return 'wmf'; 29 } 30 31 if (preg_match('/<svg.*<\/svg>/is', $data)) { 32 return 'svg'; 33 } 34 35 if (strpos($data, 'BM') === 0) { 36 return 'bmp'; 37 } 38 39 return null; 40 } 41 42} 43