Epsmaker / app.py
Akwbw's picture
Update app.py
ae8baca verified
import os
from flask import Flask, request, send_file, jsonify
from flask_cors import CORS
from vtracer import convert_image_to_svg_py
import cairosvg
from PIL import Image
import io
app = Flask(__name__)
CORS(app)
def process_image(image_file):
# 1. Image Read
img = Image.open(image_file)
# 2. Shutterstock Size Logic
width, height = img.size
total_pixels = width * height
target_pixels = 4100000
if total_pixels < target_pixels:
scale_ratio = (target_pixels / total_pixels) ** 0.5
new_width = int(width * scale_ratio)
new_height = int(height * scale_ratio)
img = img.resize((new_width, new_height), Image.Resampling.LANCZOS)
print(f"Upscaled to: {new_width}x{new_height}")
# --- FIX IS HERE (Path Change) ---
# Hum /tmp use nahi kar rahe, direct root folder use kar rahe hain
# takay 'File Not Found' ka rona khatam ho.
input_path = "temp_input.png"
svg_path = "temp_vector.svg"
eps_path = "output_shutterstock.eps"
# Pehle purani files delete karo taake mix na ho
if os.path.exists(input_path): os.remove(input_path)
if os.path.exists(svg_path): os.remove(svg_path)
if os.path.exists(eps_path): os.remove(eps_path)
# Image Save (Force Save)
img.save(input_path)
# Verify karo ke file save hui ya nahi
if not os.path.exists(input_path):
raise Exception("File save hi nahi hui Malik! Permissions ka masla hai.")
# 3. Vector Conversion
convert_image_to_svg_py(
input_path, # Ab ye path 100% exist karta hai
svg_path,
colormode='color',
hierarchical='stacked',
mode='spline',
filter_speckle=10,
color_precision=6,
layer_difference=20,
corner_threshold=60,
length_threshold=10,
max_iterations=8,
splice_threshold=45,
path_precision=3
)
# 4. EPS Conversion
cairosvg.svg2eps(url=svg_path, write_to=eps_path)
return eps_path
@app.route('/')
def home():
return "😈 Devil API is Running (Path Fixed)!"
@app.route('/convert', methods=['POST'])
def convert():
if 'image' not in request.files:
return jsonify({"error": "No image uploaded"}), 400
try:
file = request.files['image']
eps_file_path = process_image(file)
return send_file(
eps_file_path,
mimetype='application/postscript',
as_attachment=True,
download_name='shutterstock_vector.eps'
)
except Exception as e:
print(f"ERROR: {str(e)}")
return jsonify({"error": str(e)}), 500
if __name__ == '__main__':
app.run(host='0.0.0.0', port=7860)