File size: 1,797 Bytes
d8237e6
 
6f76902
aec01ff
d8237e6
4b959ff
0fdf15f
 
4b959ff
e1a05e8
67bbbbc
 
e1a05e8
d8237e6
aec01ff
d8237e6
6f76902
 
 
 
 
d8237e6
4b959ff
 
 
 
 
 
 
 
d0e5ac1
d8237e6
 
 
 
4b959ff
d8237e6
aec01ff
d8237e6
4b959ff
 
d8237e6
4b959ff
009280d
4b959ff
 
d8237e6
 
 
 
4b959ff
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import gradio as gr
from PIL import Image
import os
import ffmpeg

# Atur tema Gradio
gr.themes.Soft()

# Format gambar yang didukung
supported_formats = sorted(Image.SAVE.keys()) or ['BLP', 'BMP', 'BUFR', 'DDS', 'DIB', 'EPS',
                                                  'GIF', 'GRIB', 'HDF5', 'ICNS', 'ICO', 'IM',
                                                  'JPEG', 'JPEG2000', 'MPO', 'MSP', 'PALM', 'PCX',
                                                  'PDF', 'PNG', 'PPM', 'SGI', 'SPIDER', 'TGA', 'TIFF']

def convert_image_ffmpeg(image, target_format):
    try:
        # Ambil nama file asli tanpa ekstensi
        base_name = os.path.splitext(os.path.basename(image))[0]
        
        # Nama file keluaran dengan awalan yang diinginkan
        output_file = f"flowly_ai_image_converter_{base_name}.{target_format.lower()}"
        
        # Gunakan ffmpeg untuk konversi
        (
            ffmpeg
            .input(image)
            .output(output_file, format=target_format)
            .overwrite_output()
            .run(capture_stdout=True, capture_stderr=True)
        )

        return output_file
    except Exception as e:
        return f"Error: {e}"

# Antarmuka Gradio
interface = gr.Interface(
    fn=convert_image_ffmpeg,
    inputs=[
        gr.Image(label="Upload Image", type="filepath", height=512),  # Input gambar
        gr.Dropdown(label="Select Target Format", choices=supported_formats)  # Pilih format
    ],
    outputs=gr.File(label="Converted Image"),  # Output file hasil
    title="Image Format Converter",
    description="Upload an image and select any target format for conversion using FFmpeg.",
    css="footer {visibility: hidden}"  # Sembunyikan footer
)

# Jalankan aplikasi
if __name__ == "__main__":
    interface.launch()