yusufgundogdu commited on
Commit
78b02fb
·
verified ·
1 Parent(s): 7210d9e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +58 -4
app.py CHANGED
@@ -14,6 +14,8 @@ from database import init_db, close_db, get_db_path
14
  sys.path.insert(0, str(Path(__file__).parent))
15
 
16
  from demo_generate.halftone_method import apply_halftone
 
 
17
 
18
  # Environment setup
19
  os.environ['NUMBA_DISABLE_JIT'] = '1'
@@ -35,6 +37,7 @@ init_db(app)
35
  # --- Model Initialization ---
36
  device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
37
 
 
38
  try:
39
  logger.info("Loading AnimeGAN model...")
40
  model = torch.hub.load(
@@ -61,7 +64,7 @@ def process_image(image):
61
  output = model(transform(image).unsqueeze(0).to(device))
62
  return transforms.ToPILImage()((output * 0.5 + 0.5).squeeze().cpu())
63
 
64
- def remove_background(image_data):
65
  """Remove image background"""
66
  from rembg import remove
67
  input_image = Image.open(io.BytesIO(image_data))
@@ -74,6 +77,30 @@ def remove_background(image_data):
74
  def home():
75
  return "Anime Processing API - Türkçe"
76
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  @app.route('/generate', methods=['POST'])
78
  def generate():
79
  try:
@@ -96,6 +123,32 @@ def generate():
96
  logger.error(f"Hata: {str(e)}")
97
  return jsonify({'error': str(e)}), 500
98
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99
  @app.route('/remove-bg', methods=['POST'])
100
  def bg_remove():
101
  try:
@@ -110,7 +163,7 @@ def bg_remove():
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')
116
  img_io.seek(0)
@@ -120,6 +173,7 @@ def bg_remove():
120
  logger.error(f"Arkaplan kaldırma hatası: {str(e)}")
121
  return jsonify({'error': str(e)}), 500
122
 
 
123
  @app.route('/halftone', methods=['POST'])
124
  def halftone_route():
125
  try:
@@ -142,7 +196,7 @@ def halftone_route():
142
  logger.error(f"Halftone hatası: {str(e)}")
143
  return jsonify({'error': str(e)}), 500
144
 
145
- # --- Database Routes ---
146
  @app.route('/users', methods=['GET'])
147
  def get_users_route():
148
  from get_methods import get_users
@@ -163,7 +217,7 @@ def consume_user_route(udid):
163
  from consume_method import consume_user
164
  return consume_user(udid)
165
 
166
- # --- Teardown ---
167
  @app.teardown_appcontext
168
  def shutdown_session(exception=None):
169
  close_db()
 
14
  sys.path.insert(0, str(Path(__file__).parent))
15
 
16
  from demo_generate.halftone_method import apply_halftone
17
+ from demo_generate.animegan_method import apply_animegan # Yeni eklenen
18
+ from demo_generate.rembg_method import remove_background # Yeni eklenen
19
 
20
  # Environment setup
21
  os.environ['NUMBA_DISABLE_JIT'] = '1'
 
37
  # --- Model Initialization ---
38
  device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
39
 
40
+ # AnimeGAN model yükleme (orijinal kodunuz aynen korundu)
41
  try:
42
  logger.info("Loading AnimeGAN model...")
43
  model = torch.hub.load(
 
64
  output = model(transform(image).unsqueeze(0).to(device))
65
  return transforms.ToPILImage()((output * 0.5 + 0.5).squeeze().cpu())
66
 
67
+ def remove_background_original(image_data): # İsim değiştirildi
68
  """Remove image background"""
69
  from rembg import remove
70
  input_image = Image.open(io.BytesIO(image_data))
 
77
  def home():
78
  return "Anime Processing API - Türkçe"
79
 
80
+ # Yeni eklenen endpoint: /generate-v2
81
+ @app.route('/generate-v2', methods=['POST'])
82
+ def generate_v2():
83
+ try:
84
+ if 'image' not in request.files:
85
+ return jsonify({'error': 'Resim yüklenmedi'}), 400
86
+
87
+ file = request.files['image']
88
+ if not file.filename:
89
+ return jsonify({'error': 'Boş dosya'}), 400
90
+
91
+ image = Image.open(io.BytesIO(file.read())).convert("RGB")
92
+ processed_img = apply_animegan(image) # Yeni modül kullanılıyor
93
+
94
+ img_io = io.BytesIO()
95
+ processed_img.save(img_io, 'PNG')
96
+ img_io.seek(0)
97
+ return send_file(img_io, mimetype='image/png')
98
+
99
+ except Exception as e:
100
+ logger.error(f"Hata: {str(e)}")
101
+ return jsonify({'error': str(e)}), 500
102
+
103
+ # Orijinal endpoint'ler aynen korundu
104
  @app.route('/generate', methods=['POST'])
105
  def generate():
106
  try:
 
123
  logger.error(f"Hata: {str(e)}")
124
  return jsonify({'error': str(e)}), 500
125
 
126
+ # Yeni eklenen endpoint: /remove-bg-v2
127
+ @app.route('/remove-bg-v2', methods=['POST'])
128
+ def bg_remove_v2():
129
+ try:
130
+ if 'image' not in request.files:
131
+ return jsonify({'error': 'Resim yüklenmedi'}), 400
132
+
133
+ file = request.files['image']
134
+ file.seek(0, os.SEEK_END)
135
+ file_size = file.tell()
136
+ file.seek(0)
137
+
138
+ if file_size > 10 * 1024 * 1024:
139
+ return jsonify({'error': 'Dosya boyutu 10MB üzerinde'}), 400
140
+
141
+ output = remove_background(file.read()) # Yeni modül kullanılıyor
142
+ img_io = io.BytesIO()
143
+ output.save(img_io, 'PNG')
144
+ img_io.seek(0)
145
+ return send_file(img_io, mimetype='image/png')
146
+
147
+ except Exception as e:
148
+ logger.error(f"Arkaplan kaldırma hatası: {str(e)}")
149
+ return jsonify({'error': str(e)}), 500
150
+
151
+ # Orijinal endpoint aynen korundu
152
  @app.route('/remove-bg', methods=['POST'])
153
  def bg_remove():
154
  try:
 
163
  if file_size > 10 * 1024 * 1024:
164
  return jsonify({'error': 'Dosya boyutu 10MB üzerinde'}), 400
165
 
166
+ output = remove_background_original(file.read())
167
  img_io = io.BytesIO()
168
  output.save(img_io, 'PNG')
169
  img_io.seek(0)
 
173
  logger.error(f"Arkaplan kaldırma hatası: {str(e)}")
174
  return jsonify({'error': str(e)}), 500
175
 
176
+ # Orijinal halftone endpoint'i aynen korundu
177
  @app.route('/halftone', methods=['POST'])
178
  def halftone_route():
179
  try:
 
196
  logger.error(f"Halftone hatası: {str(e)}")
197
  return jsonify({'error': str(e)}), 500
198
 
199
+ # --- Database Routes --- (Aynen korundu)
200
  @app.route('/users', methods=['GET'])
201
  def get_users_route():
202
  from get_methods import get_users
 
217
  from consume_method import consume_user
218
  return consume_user(udid)
219
 
220
+ # --- Teardown --- (Aynen korundu)
221
  @app.teardown_appcontext
222
  def shutdown_session(exception=None):
223
  close_db()