Моя любимая библиотека манипуляций с изображениями - WideImage
.Это невероятно легко сделать такую задачу.
WideImage::load('pic.png')
->crop('center', 'center', 90, 50)->saveToFile('cropped/pic.jpg');
Что касается проверки, является ли это изображение или нет, используйте finfo
или PEAR::Mime_type
.Я лично предпочитаю PEAR::Mime_Type
.Он использует finfo
, но его проще использовать.
Использование finfo
:
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mimetype = finfo_file($finfo, $filename);
$isImage = (preg_match('#^image/#', $mimetype) === 1);
Использование PEAR::Mime_Type
:
$mimetype = MIME_Type::autoDetect($filename);
$isImage = MIME_Type::wildcardMatch('image/*', $mimetype);