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