Тъй като сега имам проект, в който трябва да се работи повече със снимки – да се копират, преместват, създават, водни знаци, 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:

  1. Прост начин за обохждане на масив и връщане на резултатите в обратен ред
  2. ООП урок 2 – създаване на клас
  3. Брояч на онлайн потребители – ООП урок
  4. Функция за заявка към база данни