public function handleUpload(Request $request) { $this->validate($request, ["name" => "required|min:2|max:200", "uploadtype" => "required", "file" => "required_if:uploadtype,image|image|max:200", "pdecapture" => "required_if:uploadtype,code", "description" => "max:2000", "license" => "required|in:ccby4,unlicense"]); $submissionid = strtolower(str_random(5)); while (Sprite::where("alphaid", "=", $submissionid)->exists()) { $submissionid = strtolower(str_random(5)); } $path = public_path() . "/sprites/full/" . $submissionid . ".png"; if ($request->input("uploadtype") == "image") { if ($request->file("file")->getSize() > 200 * 1000) { // 200kb return redirect()->back()->withErrors(["This file is too large."])->withInput(); } Image::make($request->file("file")->getRealPath())->save($path); } else { $base64 = $request->input("pdecapture"); Image::make($base64)->save($path); } if (Sprite::where("checkfile", "=", sha1_file($path))->exists()) { unlink($path); return redirect()->back()->withErrors(["This file is a duplicate."])->withInput(); } $image = Image::make($path); $palette = new \BrianMcdo\ImagePalette\ImagePalette($path, 3); $colors = ""; foreach ($palette as $color) { $colors .= $color . " "; } Sprite::create(["title" => $request->input("name"), "alphaid" => $submissionid, "description" => $request->input("description"), "license" => $request->input("license"), "username" => Auth::user()->alphaid, "width" => $image->width(), "height" => $image->height(), "filesize" => $image->filesize(), "checkfile" => sha1_file($path), "colors" => $colors]); if ($image->width() / $image->height() > 1.5) { $image->widen(30)->save(public_path() . "/sprites/small/" . $submissionid . ".png"); } else { $image->widen(15)->save(public_path() . "/sprites/small/" . $submissionid . ".png"); } return redirect("/sprite/" . $submissionid); }