import React, { useState } from 'react'; import { SelectValue, SelectTrigger, SelectItem, SelectContent, Select } from "@/components/ui/select"; import { Input } from "@/components/ui/input"; import { Button } from "@/components/ui/button"; const BACK_END_URL = 'http://localhost:5000' // const BACK_END_URL = ''; type Operation = 'edge_detection' | 'color_inversion' | 'grayscale' | 'blur' | 'sharpen' | 'brightness_increase' | 'contrast_increase' | 'sharpening'; export default function Component() { const [file, setFile] = useState(null); const [filePreview, setFilePreview] = useState('https://placehold.jp/1000x1000.png'); const [downloadUrl, setDownloadUrl] = useState(''); const [operation, setOperation] = useState('edge_detection'); const handleFileChange = (event: React.ChangeEvent): void => { if (event.target.files) { const selectedFile = event.target.files[0]; setFile(selectedFile); setFilePreview(URL.createObjectURL(selectedFile)); } }; const processImage = async (): Promise => { if (!file) { alert('Please select a file first!'); return; } const formData = new FormData(); formData.append('image', file); formData.append('operation', operation); try { const response = await fetch(`${BACK_END_URL}/upload`, { method: 'POST', body: formData, }); const data = await response.json(); if (response.ok) { setDownloadUrl(`${data.processed_file}`); console.log(data.processed_file); alert('File processed successfully!'); } else { alert(data.error || 'Failed to process the file'); } } catch (error) { alert('Error connecting to the server'); } }; const downloadImage = (): void => { if (!downloadUrl) { alert('No processed image available for download!'); return; } window.open(downloadUrl); }; return (
Processed Image
); }