37689-vm/api/save.php
2026-01-26 01:57:49 +00:00

41 lines
1.3 KiB
PHP

<?php
header('Content-Type: application/json');
require_once __DIR__ . '/../db/config.php';
$data = json_decode(file_get_contents('php://input'), true);
if (!$data || empty($data['image'])) {
echo json_encode(['success' => false, 'error' => 'No image data provided']);
exit;
}
try {
$img_data = $data['image'];
$img_data = str_replace('data:image/png;base64,', '', $img_data);
$img_data = str_replace(' ', '+', $img_data);
$decoded_data = base64_decode($img_data);
$filename = 'assets/images/pexels/edited_' . md5(uniqid()) . '.png';
$target = __DIR__ . '/../' . $filename;
if (!is_dir(__DIR__ . '/../assets/images/pexels/')) {
mkdir(__DIR__ . '/../assets/images/pexels/', 0775, true);
}
if (file_put_contents($target, $decoded_data)) {
// Save to database
$stmt = db()->prepare("INSERT INTO media_history (type, prompt, result_url) VALUES (?, ?, ?)");
$stmt->execute(['photo', 'Edited in Nano Editor', $filename]);
echo json_encode([
'success' => true,
'url' => $filename,
'message' => 'Сохранено в галерее!'
]);
} else {
echo json_encode(['success' => false, 'error' => 'Failed to save image file']);
}
} catch (Exception $e) {
echo json_encode(['success' => false, 'error' => $e->getMessage()]);
}