fahrulputraa40 commited on
Commit
d2972dd
·
verified ·
1 Parent(s): fb355d3

Upload app.py

Browse files
Files changed (1) hide show
  1. backend/app.py +30 -1
backend/app.py CHANGED
@@ -1,9 +1,38 @@
1
  from flask import Flask, request, jsonify, send_from_directory
2
  import io
3
  import os
 
 
 
4
 
5
  app = Flask(__name__, static_folder='../frontend', static_url_path='')
6
 
 
 
7
  @app.route("/")
8
  def index():
9
- return send_from_directory(app.static_folder, "index.html")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  from flask import Flask, request, jsonify, send_from_directory
2
  import io
3
  import os
4
+ from PIL import Image
5
+ import numpy as np
6
+ import tensorflow as tf
7
 
8
  app = Flask(__name__, static_folder='../frontend', static_url_path='')
9
 
10
+ model = tf.keras.models.load_model("./model.h5")
11
+
12
  @app.route("/")
13
  def index():
14
+ return send_from_directory(app.static_folder, "index.html")
15
+
16
+ @app.route("/predict", methods=["POST"])
17
+ def predict():
18
+ file = request.files.get("file")
19
+ if file is None:
20
+ return jsonify({"error": "No file uploaded"}), 400
21
+
22
+ try:
23
+ img = Image.open(io.BytesIO(file.read())).convert("RGB").resize((32, 32))
24
+ arr = np.array(img).astype("float32") / 255.0
25
+ arr = np.expand_dims(arr, axis=0)
26
+
27
+ preds = model.predict(arr)
28
+ top_idx = np.argmax(preds[0])
29
+ result = {
30
+ "class": top_idx,
31
+ "confidence": float(preds[0][top_idx]),
32
+ "raw": preds[0].tolist()
33
+ }
34
+
35
+ return jsonify(result)
36
+
37
+ except Exception as e:
38
+ return jsonify({"error": f"Gagal memproses gambar: {str(e)}"}), 500