'half', 'width'=>0, 'height'=>0, 'crop'=>false], ['name'=>'hd', 'width'=>1920, 'height'=>1080, 'crop'=>false], ['name'=>'thumbnail', 'width'=>300, 'height'=>300, 'crop'=>false], //['name'=>'crop', 'width'=>300, 'height'=>300, 'crop'=>true], ]; // Set the quality (0-100) $JPEG_quality = 75; // Adjust this value as needed // Set the compression level (0-9) $PNG_compression = 9; // Adjust this value as needed $GIF_number_of_colors = 128; // Adjust number of Colors as needed /** * nano /etc/php/8.3/apache2/php.ini * edit php.ini for the following: */ ini_set('upload_max_filesize', '6M'); // Adjust upload limits ini_set('post_max_size', '6M'); ini_set('max_file_uploads', '15'); ini_set('max_execution_time', '90'); // 90 seconds = 1.5 minutes ini_set('max_input_time', '90'); // 1.5 minutes require_once "image_compression.php"; if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_FILES['files'])) { $files = $_FILES['files']; $responses = []; // Ensure the uploads directory exists if (!is_dir($uploadDir)) { mkdir($uploadDir, 0775, true); } for ($i = 0; $i < count($files['name']); $i++) { $fileName = basename($files['name'][$i]); $fileTmpName = $files['tmp_name'][$i]; $fileSize = $files['size'][$i]; $fileType = strtolower(pathinfo($fileName, PATHINFO_EXTENSION)); $uploadFile = $uploadDir . $fileName; // Validate file type (only images allowed) if (!in_array($fileType, $validTypes)) { $responses[] = ['status' => 'error', 'message' => "Invalid file type for {$fileName}. Only images are allowed."]; @unlink($fileTmpName); continue; } // Validate file size (limit to 5MB) if ($fileSize > $maxFileSize) { $responses[] = ['status' => 'error', 'message' => "File size for $fileName exceeds the limit of 5MB."]; @unlink($fileTmpName); continue; } // Move the uploaded file to the server if (move_uploaded_file($fileTmpName, $uploadFile)) { $compressed_files = image_compression($uploadFile, $fileName, $GLOBALS['a_crops']); if (count($compressed_files)) { $responses[] = ['status' => 'success', 'message' => "$fileName"]; foreach($compressed_files as $file) { $save_to_DB = $uploadDir . $file; // HANDLE $save_to_DB to save to Database } } else { $responses[] = ['status' => 'error', 'message' => "Failed to Scale image$fileName."]; } } else { $responses[] = ['status' => 'error', 'message' => "Failed to upload $fileName."]; } } echo json_encode($responses); } else { echo json_encode([['status' => 'error', 'message' => 'No files were uploaded.']]); } } else { echo json_encode([['status' => 'error', 'message' => 'Invalid request method.']]); }