Spaces:
Sleeping
Sleeping
fix type error
Browse files
app.py
CHANGED
|
@@ -25,10 +25,14 @@ format_options = {
|
|
| 25 |
}
|
| 26 |
|
| 27 |
|
| 28 |
-
def convert_image(
|
| 29 |
quality, compress_level,
|
| 30 |
jpeg2000_layers, avif_speed,
|
| 31 |
subsampling, professional_lossless):
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
# Load image and convert to RGB
|
| 33 |
image = Image.open(io.BytesIO(img_bytes)).convert("RGB")
|
| 34 |
|
|
@@ -54,7 +58,6 @@ def convert_image(img_bytes, output_format,
|
|
| 54 |
save_kwargs["compress_level"] = compress_level
|
| 55 |
save_kwargs["optimize"] = True
|
| 56 |
if fmt == "JPEG2000":
|
| 57 |
-
# quality_layers expects list of ints
|
| 58 |
save_kwargs["quality_layers"] = [int(l) for l in jpeg2000_layers.split(",")]
|
| 59 |
if fmt == "AVIF":
|
| 60 |
save_kwargs["quality"] = quality
|
|
@@ -68,6 +71,7 @@ def convert_image(img_bytes, output_format,
|
|
| 68 |
buf.seek(0)
|
| 69 |
return buf.getvalue()
|
| 70 |
|
|
|
|
| 71 |
# Build Gradio app
|
| 72 |
def build_app():
|
| 73 |
with gr.Blocks() as demo:
|
|
@@ -87,7 +91,7 @@ def build_app():
|
|
| 87 |
avif_speed = gr.Slider(0, 8, value=4, step=1, label="AVIF Speed")
|
| 88 |
subsample = gr.Dropdown(choices=["4:4:4", "4:2:2", "4:2:0"], value="4:2:0", label="HEIF Subsampling")
|
| 89 |
professional = gr.Checkbox(label="Professional Lossless Mode",
|
| 90 |
-
|
| 91 |
convert_btn = gr.Button("Convert")
|
| 92 |
|
| 93 |
convert_btn.click(
|
|
@@ -99,6 +103,7 @@ def build_app():
|
|
| 99 |
)
|
| 100 |
return demo
|
| 101 |
|
|
|
|
| 102 |
if __name__ == "__main__":
|
| 103 |
app = build_app()
|
| 104 |
app.launch()
|
|
|
|
| 25 |
}
|
| 26 |
|
| 27 |
|
| 28 |
+
def convert_image(img_file, output_format,
|
| 29 |
quality, compress_level,
|
| 30 |
jpeg2000_layers, avif_speed,
|
| 31 |
subsampling, professional_lossless):
|
| 32 |
+
# Read the uploaded file as bytes
|
| 33 |
+
with open(img_file, "rb") as f:
|
| 34 |
+
img_bytes = f.read()
|
| 35 |
+
|
| 36 |
# Load image and convert to RGB
|
| 37 |
image = Image.open(io.BytesIO(img_bytes)).convert("RGB")
|
| 38 |
|
|
|
|
| 58 |
save_kwargs["compress_level"] = compress_level
|
| 59 |
save_kwargs["optimize"] = True
|
| 60 |
if fmt == "JPEG2000":
|
|
|
|
| 61 |
save_kwargs["quality_layers"] = [int(l) for l in jpeg2000_layers.split(",")]
|
| 62 |
if fmt == "AVIF":
|
| 63 |
save_kwargs["quality"] = quality
|
|
|
|
| 71 |
buf.seek(0)
|
| 72 |
return buf.getvalue()
|
| 73 |
|
| 74 |
+
|
| 75 |
# Build Gradio app
|
| 76 |
def build_app():
|
| 77 |
with gr.Blocks() as demo:
|
|
|
|
| 91 |
avif_speed = gr.Slider(0, 8, value=4, step=1, label="AVIF Speed")
|
| 92 |
subsample = gr.Dropdown(choices=["4:4:4", "4:2:2", "4:2:0"], value="4:2:0", label="HEIF Subsampling")
|
| 93 |
professional = gr.Checkbox(label="Professional Lossless Mode",
|
| 94 |
+
info="Force highest-quality lossless conversion as optimized PNG")
|
| 95 |
convert_btn = gr.Button("Convert")
|
| 96 |
|
| 97 |
convert_btn.click(
|
|
|
|
| 103 |
)
|
| 104 |
return demo
|
| 105 |
|
| 106 |
+
|
| 107 |
if __name__ == "__main__":
|
| 108 |
app = build_app()
|
| 109 |
app.launch()
|