File size: 1,062 Bytes
168a9d1
 
 
d2972dd
 
 
168a9d1
 
 
3e3d6f7
d2972dd
168a9d1
 
d2972dd
 
 
 
 
 
 
 
 
 
 
 
 
 
96a95c2
d2972dd
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
from flask import Flask, request, jsonify, send_from_directory
import io
import os
from PIL import Image
import numpy as np
import tensorflow as tf

app = Flask(__name__, static_folder='../frontend', static_url_path='')

model = tf.keras.models.load_model("backend/model.keras")

@app.route("/")
def index():
    return send_from_directory(app.static_folder, "index.html")

@app.route("/predict", methods=["POST"])
def predict():
    file = request.files.get("file")
    if file is None:
        return jsonify({"error": "No file uploaded"}), 400

    try:
        img = Image.open(io.BytesIO(file.read())).convert("RGB").resize((32, 32))
        arr = np.array(img).astype("float32") / 255.0
        arr = np.expand_dims(arr, axis=0) 

        preds = model.predict(arr)
        top_idx = int(np.argmax(preds[0])) 
        result = {
            "class": top_idx,
            "confidence": float(preds[0][top_idx]),
        }

        return jsonify(result)

    except Exception as e:
        return jsonify({"error": f"Gagal memproses gambar: {str(e)}"}), 500