Update app.py
Browse files
app.py
CHANGED
|
@@ -2,12 +2,17 @@ import os
|
|
| 2 |
import sys
|
| 3 |
import io
|
| 4 |
import logging
|
|
|
|
| 5 |
from datetime import datetime
|
| 6 |
from flask import Flask, request, send_file, jsonify
|
| 7 |
from PIL import Image, ImageDraw
|
| 8 |
import torch
|
| 9 |
import torchvision.transforms as transforms
|
| 10 |
from database import init_db, close_db, get_db_path
|
|
|
|
|
|
|
|
|
|
|
|
|
| 11 |
from demo_generate.halftone_method import apply_halftone
|
| 12 |
|
| 13 |
# Environment setup
|
|
@@ -64,26 +69,6 @@ def remove_background(image_data):
|
|
| 64 |
input_image = input_image.convert('RGB')
|
| 65 |
return remove(input_image)
|
| 66 |
|
| 67 |
-
def apply_halftone(image, dot_size=10):
|
| 68 |
-
"""Apply halftone effect"""
|
| 69 |
-
grayscale = image.convert('L')
|
| 70 |
-
width, height = grayscale.size
|
| 71 |
-
halftone_img = Image.new('L', (width, height), 255)
|
| 72 |
-
draw = ImageDraw.Draw(halftone_img)
|
| 73 |
-
|
| 74 |
-
for x in range(0, width, dot_size):
|
| 75 |
-
for y in range(0, height, dot_size):
|
| 76 |
-
block = grayscale.crop((x, y, x+dot_size, y+dot_size))
|
| 77 |
-
avg = sum(block.getdata()) / (dot_size**2)
|
| 78 |
-
radius = int((255 - avg) / 255 * (dot_size//2))
|
| 79 |
-
draw.ellipse([
|
| 80 |
-
x+dot_size//2-radius,
|
| 81 |
-
y+dot_size//2-radius,
|
| 82 |
-
x+dot_size//2+radius,
|
| 83 |
-
y+dot_size//2+radius
|
| 84 |
-
], fill=0)
|
| 85 |
-
return halftone_img
|
| 86 |
-
|
| 87 |
# --- API Routes ---
|
| 88 |
@app.route('/')
|
| 89 |
def home():
|
|
@@ -118,10 +103,13 @@ def bg_remove():
|
|
| 118 |
return jsonify({'error': 'Resim yüklenmedi'}), 400
|
| 119 |
|
| 120 |
file = request.files['image']
|
| 121 |
-
|
| 122 |
-
|
| 123 |
file.seek(0)
|
| 124 |
|
|
|
|
|
|
|
|
|
|
| 125 |
output = remove_background(file.read())
|
| 126 |
img_io = io.BytesIO()
|
| 127 |
output.save(img_io, 'PNG')
|
|
|
|
| 2 |
import sys
|
| 3 |
import io
|
| 4 |
import logging
|
| 5 |
+
from pathlib import Path
|
| 6 |
from datetime import datetime
|
| 7 |
from flask import Flask, request, send_file, jsonify
|
| 8 |
from PIL import Image, ImageDraw
|
| 9 |
import torch
|
| 10 |
import torchvision.transforms as transforms
|
| 11 |
from database import init_db, close_db, get_db_path
|
| 12 |
+
|
| 13 |
+
# Proje kök dizinini Python path'ine ekle
|
| 14 |
+
sys.path.insert(0, str(Path(__file__).parent))
|
| 15 |
+
|
| 16 |
from demo_generate.halftone_method import apply_halftone
|
| 17 |
|
| 18 |
# Environment setup
|
|
|
|
| 69 |
input_image = input_image.convert('RGB')
|
| 70 |
return remove(input_image)
|
| 71 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 72 |
# --- API Routes ---
|
| 73 |
@app.route('/')
|
| 74 |
def home():
|
|
|
|
| 103 |
return jsonify({'error': 'Resim yüklenmedi'}), 400
|
| 104 |
|
| 105 |
file = request.files['image']
|
| 106 |
+
file.seek(0, os.SEEK_END)
|
| 107 |
+
file_size = file.tell()
|
| 108 |
file.seek(0)
|
| 109 |
|
| 110 |
+
if file_size > 10 * 1024 * 1024:
|
| 111 |
+
return jsonify({'error': 'Dosya boyutu 10MB üzerinde'}), 400
|
| 112 |
+
|
| 113 |
output = remove_background(file.read())
|
| 114 |
img_io = io.BytesIO()
|
| 115 |
output.save(img_io, 'PNG')
|