예제 #1
0
 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;
 }