Вземане тип на изображение / image type php
Тъй като сега имам проект, в който трябва да се работи повече със снимки – да се копират, преместват, създават, водни знаци, thumb размери, се наложи естествено да знам какъв е техният тип – jpeg, png, gif, bmp.
Аз съм малко тъп програмист от време на време и първоначално написах нещо такова.
if (end(explode('.', $name)) == 'png') {
$newimg = imagecreatefrompng($pic);
} elseif (end(explode('.', $name))== 'gif') {
$newimg = @imagecreatefromgif($pic);
} elseif (end(explode('.', $name)) == 'bmp') {
$newimg =imagecreatefromwbmp($pic);
} else {
$newimg = imagecreatefromjpeg($pic);
}
И някои си викате – е ко, бачка. И тогава идва проблема, когато някой тръгва да качва снимка от друг сайт, където картинката е от рода : imagnamee.jpeg?asd=asdasa или нещо друго. Тогава тръгват сумати и грешки.
Тогава си викам – еми тогава ще съкратя. Какво може да се случи…
if (substr(end(explode('.', $name)), 0, 3) == 'png') {
$newimg = @imagecreatefrompng($pic);
} elseif (substr(end(explode('.', $name)), 0, 3) == 'gif') {
$newimg = @imagecreatefromgif($pic);
} elseif (substr(end(explode('.', $name)), 0, 3) == 'bmp') {
$newimg = @imagecreatefromwbmp($pic);
} else {
$newimg = @imagecreatefromjpeg($pic);
}
Всичко работи естествено. Този проблем го няма! И тогава идва картинка, чието име е image.jpeg, но реално е png. Някой просто си я е променил така. Тогава пак грешки.
И в крайна сметка имало готово решение, което спестява доста главоболия, а имено функцията getimagesize, която връща в масив със съдържание – височина, ширина, битс, майм тайп на снимката
$picinfo=getimagesize($pic);
// Сега викаме широчина
echo $picinfo[0];
//сега викаме височина
echo $picinfo[1];
// сега викаме тип
echo $picinfo['mime'];
// Ще върне image/jpeg примерно.
Related posts: