home
/
aioutajg
/
public_html
/
compressor
/
Go to Home Directory
+
Upload
Create File
root@0UT1S:~$
Execute
By Order of Mr.0UT1S
[DIR] ..
N/A
[DIR] .composer_home
N/A
[DIR] assets
N/A
[DIR] parts
N/A
[DIR] vendor
N/A
....install.php
1.30 KB
Rename
Delete
autoload.php
467 bytes
Rename
Delete
composer.json
62 bytes
Rename
Delete
composer.phar
2.97 MB
Rename
Delete
compress.php
4.73 KB
Rename
Delete
download.php
834 bytes
Rename
Delete
error_log
805 bytes
Rename
Delete
index.php
4.71 KB
Rename
Delete
secure-delete.php
350 bytes
Rename
Delete
<?php if ($_SERVER['REQUEST_METHOD'] === 'POST') { $uploadDir = __DIR__ . '/../../uploads/'; $allowedFormats = ['png', 'jpg', 'jpeg']; $supportedPercentages = [25, 50, 75, 100]; // Debug: Log POST data and FILES data error_log("POST Data: " . print_r($_POST, true)); error_log("FILES Data: " . print_r($_FILES, true)); // Validate uploaded files if (empty($_FILES['image']) || !is_array($_FILES['image']['name'])) { echo json_encode(['error' => 'No files uploaded.']); exit; } // Get compression percentage and output format with defaults $compressionPercentage = intval($_POST['compressionLevel'] ?? 50); // Default to 50% $outputFormat = strtolower($_POST['outputFormat'] ?? 'same'); if (!in_array($compressionPercentage, $supportedPercentages)) { echo json_encode(['error' => 'Invalid compression percentage.']); exit; } $convertedFiles = []; try { foreach ($_FILES['image']['name'] as $index => $name) { $tmpName = $_FILES['image']['tmp_name'][$index]; $error = $_FILES['image']['error'][$index]; $originalExtension = strtolower(pathinfo($name, PATHINFO_EXTENSION)); // Validate format and errors if ($error !== UPLOAD_ERR_OK || !in_array($originalExtension, $allowedFormats)) { continue; } // Generate filenames $originalFile = uniqid('original_', true) . '.' . $originalExtension; $compressedExtension = ($outputFormat === 'jpg') ? 'jpg' : $originalExtension; $compressedFile = uniqid('compressed_', true) . '.' . $compressedExtension; // Save original file if (!move_uploaded_file($tmpName, $uploadDir . $originalFile)) { continue; } // Compression logic try { $imagePath = $uploadDir . $originalFile; // Handle output format conversion if ($outputFormat === 'jpg' && $originalExtension === 'png') { // Convert PNG to JPEG (lossy) $image = imagecreatefrompng($imagePath); $quality = ($compressionPercentage === 100) ? 100 : (100 - $compressionPercentage); // Invert for JPEG imagejpeg($image, $uploadDir . $compressedFile, $quality); } else { // Keep original format if ($originalExtension === 'png') { // PNG: Max compression (level 9) unless 100% $compressionGD = ($compressionPercentage < 100) ? 9 : 0; $image = imagecreatefrompng($imagePath); imagealphablending($image, false); imagesavealpha($image, true); imagepng($image, $uploadDir . $compressedFile, $compressionGD); } else { // JPEG: Direct quality mapping $image = imagecreatefromjpeg($imagePath); imagejpeg($image, $uploadDir . $compressedFile, $compressionPercentage); } } imagedestroy($image); // Add to results $convertedFiles[] = $compressedFile; } catch (Exception $e) { error_log("Compression failed: " . $e->getMessage()); continue; } } // Return JSON response if (!empty($convertedFiles)) { if (count($convertedFiles) === 1) { echo json_encode(['success' => true, 'files' => [$convertedFiles[0]]]); } else { // Create ZIP archive $zipFileName = uniqid('compressed_images_', true) . '.zip'; $zipFilePath = $uploadDir . $zipFileName; $zip = new ZipArchive(); if ($zip->open($zipFilePath, ZipArchive::CREATE) === TRUE) { foreach ($convertedFiles as $file) { $zip->addFile($uploadDir . $file, $file); } $zip->close(); echo json_encode(['success' => true, 'zip' => $zipFileName]); } else { echo json_encode(['error' => 'Failed to create ZIP archive.']); } } } else { echo json_encode(['error' => 'No files were compressed.']); } } catch (Exception $e) { echo json_encode(['error' => 'An unexpected error occurred: ' . $e->getMessage()]); } } else { echo json_encode(['error' => 'Invalid request method.']); } ?>
Save