Если можно проверить, был ли тип изображения, если он был переименован из .png
в .jpg
?
Мне нужно это, потому что, когда я использую функцию изменения размера, мой сайт перестает работать, если загруженное изображение было переименовано из .png в .jpg (я сделал свой код, чтобы принимать только изображения .jpg)
getimagesize будет содержать информацию о типе изображения:
$info = getimagesize('file.png'); if($info[2] == IMAGETYPE_JPEG){ }
Каждый .png начинается с этих байтов:
89 50 4E 47 0D 0A 1A 0A
Это подпись PNG. Если .jpg начинается с этих байтов, это не jpg.
Вы всегда можете прочитать тип изображения, чтобы проверить изображение с помощью exif_imagetype ()
$image_type = exif_imagetype($filename);
Пример:
<?php if (exif_imagetype('image.gif') != IMAGETYPE_GIF) { echo 'The picture is not a gif'; } ?>
Да, вы можете использовать это
if($_FILES["imagefile"]["type"] == "image/jpeg") { return true; } else if($_FILES["imagefile"]["type"] == "image/png") { return false; }
Или вы должны использовать этот mime_content_type, более надежный, потому что $_FILES["imagefile"]["type"]
можно подделать с клиентской стороны …
Да, проверьте магический номер файла
Что вам нужно знать, это не история файла, а его реальный формат. Вы можете это сделать, изучив содержимое файла: файлы JPG должны начинаться с байтов FF D8 и заканчиваться FF D9. Файлы PNG начинаются с другой подписи: \ 211 PNG \ r \ n \ 032 \ n (в шестнадцатеричном виде: 89 50 4E 47 0D 0A 1A 0A).
См. Этот веб-сайт для получения дополнительной информации: http://en.wikipedia.org/wiki/Magic_number_%28programming%29
Попробуйте file
команду file
.
Когда unknownimage
является JPG-изображением:
$ file unknownimage unknownimage: JPEG image data, baseline, precision 8, 400x400, frames 3
Когда файл unknownimage
является PNG-изображением:
$ file unknownimage unknownimage: PNG image data, 779 x 701, 8-bit/color RGBA, non-interlaced