public function compress($file, $lossy = false) { if (!file_exists($file)) { throw new \Exception('File not found: ' . $file); } if (!is_file($file)) { throw new \Exception('Invalid file: ' . $file); } if (filesize($file) > self::MAX_FILESIZE) { throw new \Exception($file . ' exceeds maximum file size of ' . self::MAX_FILESIZE . ' bytes'); } $result = $this->upload($file); if (!$result->status) { return false; } if (!isset($result->optimized_url)) { throw new \Exception('PunyPNG API did not return a download URL'); } if ($lossy && !isset($result->indexed_url)) { throw new \Exception('PunyPNG API did not return a lossy download URL'); } // Log successful result $ics = new \ImageCompressionSaurus(); $ics->original_size = $result->original_size; if ($lossy) { $ics->optimized_size = $result->original_size - $result->indexed_savings_bytes; } else { $ics->optimized_size = $result->optimized_size; } $ics->ctime = \SparkLib\DB::Now(); $ics->insert(); return $result; }