ну, это не так просто. PNG и GIF несут информацию об альфа-уровне, который может быть потерян (и, следовательно, представлен в другом цвете). Кроме того, как сказал @hakre, тип mime, предоставляемый браузерами, не является действительно достоверной информацией. И ваши MIME не являются полными, так как есть другие возможности: например, у меня возникли некоторые проблемы с IE8, потому что он назначил MIME 'image / x-png' вместо обычного 'image / png', и это может легко сломать вашу функциональность.
Хороший надежный способ получения MIME (и оценки, если изображение действительно является изображением, что является важным шагом!) Использует getimagesize () function
$size = getimagesize($file);
$mime = $size['mime'];
getimagesize()
возвращает массив с 4 индексами, I.E.:
- Индекс 0 - это ширина изображения в пикселях.
- Индекс 1 - это высота изображения в пикселях.
Индекс 2 является флагом для типа изображения:
1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF (orden
de bytes intel), 8 = TIFF (orden de bytes motorola), 9 = JPC, 10 = JP2,
11 = JPX, 12 = JB2, 13 = SWC, 14 = IFF, 15 = WBMP, 16 = XBM.
Индекс 3 содержит 'height = "yyy" width = "xxx"'
Я взял вышеприведенное резюме со страницы руководства, на которую я ссылался, но вы можете легко проверить это самостоятельно, я просто ленился.
Вам нужно добавить хотя бы PNG:
imagealphablending($img, true); // setting alpha blending on
imagesavealpha($img, true); // save alphablending setting
Но поищите более полный пример в руководстве или обратитесь к нему за Google, так как это были только предположения, вам нужно адаптировать ситуацию к степени, в которой вам нужно обрабатывать ваше изображение.