xref: /plugin/dw2pdf/vendor/mpdf/mpdf/src/Image/ImageTypeGuesser.php (revision f6b6ef8702ed2497118554fab8d66533b3b9b760)
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