img2color / app.py
cecil
fix response
83175b1
from flask import Flask, request, jsonify
from PIL import Image
import requests
from io import BytesIO
from sklearn.cluster import KMeans
import numpy as np
app = Flask(__name__)
def extract_dominant_color(image_url):
try:
response = requests.get(image_url)
img = Image.open(BytesIO(response.content)).convert('RGB')
img = img.resize((100, 100)) # 降低像素加快处理
pixels = np.array(img).reshape(-1, 3)
kmeans = KMeans(n_clusters=1, random_state=0).fit(pixels)
dominant_color = kmeans.cluster_centers_[0].astype(int)
hex_color = '#{:02x}{:02x}{:02x}'.format(*dominant_color)
return hex_color
except Exception as e:
return str(e)
@app.route('/')
def index():
return jsonify({
"message": "Use /color?img=https://your-image.jpg to get dominant color."
})
@app.route('/color')
def get_color():
image_url = request.args.get('img')
if not image_url:
return jsonify({'error': 'Missing image URL ?img=xxx'}), 400
hex_color = extract_dominant_color(image_url)
if hex_color.startswith('#'):
return jsonify({'RGB': hex_color})
else:
return jsonify({'error': 'Failed to extract color', 'detail': hex_color}), 500
if __name__ == '__main__':
app.run(host='0.0.0.0', port=7860)