'/var/www/html/app_ad.png', 'app_logo' => '/var/www/html/app_logo.png', 'vertical_ad' => '/var/www/html/vertical_ad.png', 'horizontal_ad' => '/var/www/html/horizontal_ad.png' ]; $secondary_dir = '/var/www/encoder/'; if (isset($_POST['app_ad_url'])) { $current_json = []; if (file_exists($json_file)) { $current_json = json_decode(file_get_contents($json_file), true) ?? []; } $current_json['app_ad_url'] = $_POST['app_ad_url']; if (!file_put_contents($json_file, json_encode($current_json, JSON_PRETTY_PRINT))) { $errors[] = "Failed to update app.json with the new URL."; } } $errors = []; // Handle File Deletions $to_delete = $_POST['remove_files'] ?? []; foreach ($to_delete as $file_key => $should_delete) { if ($should_delete === '1' && isset($upload_paths[$file_key])) { $path = $upload_paths[$file_key]; if (file_exists($path)) { unlink($path); // Also remove from encoder directory $secondary_path = $secondary_dir . basename($path); if (file_exists($secondary_path)) { unlink($secondary_path); } } } } foreach ($upload_paths as $input_name => $destination) { if (isset($_FILES[$input_name]) && $_FILES[$input_name]['error'] == 0) { $tmp_path = $_FILES[$input_name]['tmp_name']; // 1. Verify it is actually a PNG using GD/getimagesize $image_info = @getimagesize($tmp_path); if (!$image_info || $image_info[2] !== IMAGETYPE_PNG) { $errors[] = "File for $input_name must be a valid PNG image."; continue; } // Define dimensions based on input name $dimensions = [ 'app_logo' => [128, 128], 'app_ad' => [256, 256], 'vertical_ad' => [288, 840], 'horizontal_ad' => [1920, 240] ]; $target_width = $dimensions[$input_name][0]; $target_height = $dimensions[$input_name][1]; // 3. Load the source image $src_img = @imagecreatefrompng($tmp_path); if (!$src_img) { $errors[] = "Failed to process $input_name (Invalid PNG data)."; continue; } // 4. Create a blank truecolor canvas $dst_img = imagecreatetruecolor($target_width, $target_height); // 5. Preserve transparency for PNG imagealphablending($dst_img, false); imagesavealpha($dst_img, true); $transparent = imagecolorallocatealpha($dst_img, 0, 0, 0, 127); imagefill($dst_img, 0, 0, $transparent); // 6. Resize (Resample) imagecopyresampled( $dst_img, $src_img, 0, 0, 0, 0, $target_width, $target_height, imagesx($src_img), imagesy($src_img) ); // 7. Save to primary destination with compression (level 7) if (imagepng($dst_img, $destination, 7)) { $filename = basename($destination); $secondary_destination = $secondary_dir . $filename; if (!@copy($destination, $secondary_destination)) { $errors[] = "Failed to create secondary copy for $input_name."; } } else { $errors[] = "Failed to save processed $input_name."; } imagedestroy($src_img); imagedestroy($dst_img); } } // Save if no errors occurred if (empty($errors)) { header("Location: " . $_SERVER['PHP_SELF']); exit; } else { $error_message = implode("
", $errors); } } include 'header.php'; ?>

Image Assets Management

App Logo (128x128)

App Ad (256x256)

Vertical Ad (288x840)

Horizontal Ad (11920x240)