Exemple #1
0
if ($state->isState('authorized')) {
    $login = $state->getState('authorized');
    if ($_FILES['image']['error'] !== 0) {
        error("Ошибка при загрузке изображения.");
    } else {
        if ($_FILES['image']['size'] === 0) {
            error("Файл не выбран.");
        } else {
            $tmpImage = $_FILES['image']['tmp_name'];
            $size = getimagesize($tmpImage);
            $typeToImgCreateFuncs = ['image/gif' => 'imagecreatefromgif', 'image/jpeg' => 'imagecreatefromjpeg', 'image/png' => 'imagecreatefrompng', 'image/bmp' => 'imagecreatefrombmp'];
            if (!$size || !in_array($size['mime'], array_keys($typeToImgCreateFuncs))) {
                error("Некорректный формат изображения.");
            } else {
                $param = new Parameters();
                $db = new DB();
                $id = $db->addImage($login);
                $image = call_user_func($typeToImgCreateFuncs[$size['mime']], $tmpImage);
                $imagePath = $param->imagesPath . $login . DIRECTORY_SEPARATOR;
                $ratio = $size[1] / $size[0];
                $size = $param->previewSize;
                $scaled = imagescale($image, $size['width'], $size['height'] * $ratio);
                imagejpeg($image, $imagePath . $id . '.jpg', 100);
                imagejpeg($scaled, $imagePath . $id . $param->previewSuffix . '.jpg');
                imagedestroy($image);
                imagedestroy($scaled);
                echo "success";
            }
        }
    }
}