height > $photo->width) { $aspectRatio = $photo->height / $photo->width; $thumbnailWidth = intval($thumbnailInfo['height']) / $aspectRatio; $thumbnailHeight = intval($thumbnailInfo['height']); } $thumbnailImageResource = imagecreatetruecolor($thumbnailWidth, $thumbnailHeight); imagecopyresized( $thumbnailImageResource, $gdImageResource, 0, 0, 0, 0, $thumbnailWidth, $thumbnailHeight, $photo->width, $photo->height ); // TODO make the /tmp folder configurable $tempName = tempnam('/tmp', 'btw_thumb_'); $tempNameWithExtension = ($tempName . '.jpg'); rename($tempName, $tempNameWithExtension); // TODO make thumbnail quality configurable imagejpeg($thumbnailImageResource, $tempNameWithExtension, 90); return $tempNameWithExtension; } public function openImage($imagePath, &$imageInfo) { $imageInfo = getimagesize($imagePath); $im = false; $type = $imageInfo[2]; $allowedTypes = [ IMG_GIF, IMG_PNG, IMG_JPEG, IMG_WBMP ]; if (!in_array($type, $allowedTypes)) { return false; } switch ($type) { case IMG_GIF: $im = imagecreatefromgif($imagePath); break; case IMG_JPEG: $im = imagecreatefromjpeg($imagePath); break; case IMG_PNG: $im = imagecreatefrompng($imagePath); break; case IMG_WBMP: $im = imagecreatefromwbmp($imagePath); break; } return $im; } }