bogota_land_space / test /test_api_local.py
viarias's picture
Upload 6 files
20820c3 verified
import requests
import base64
from pathlib import Path
from PIL import Image
import io
def resize_image(image: Image.Image, max_size: int = 224) -> Image.Image:
"""
Resize an image while maintaining aspect ratio.
Args:
image: PIL Image object to resize
max_size: Maximum dimension (width or height) of the output image
Returns:
PIL Image: Resized image with maintained aspect ratio
"""
# Get current dimensions
width, height = image.size
# Calculate scaling factor to fit within max_size
scale = min(max_size / width, max_size / height)
# Only resize if image is larger than max_size
if scale < 1:
new_width = int(width * scale)
new_height = int(height * scale)
image = image.resize(
(new_width, new_height),
Image.LANCZOS
)
return image
# Define your desired size
TARGET_SIZE = 16
# Define the image paths
image_paths = [
"images/AAA0119DNBSPD01.jpg",
"images/AAA0119DNBSPD02.jpg"
]
# Read and encode images
images = []
for path in image_paths:
# Open the image
img = Image.open(path)
# Resize the image (using LANCZOS for high-quality downsampling)
img = resize_image(img, max_size=TARGET_SIZE)
# Convert to bytes
buffered = io.BytesIO()
img.save(buffered, format="JPEG") # You can change format to PNG if needed
# Encode to base64
base64_image = base64.b64encode(buffered.getvalue()).decode('utf-8')
images.append(base64_image)
# Make the request
print(images[0])
url = "http://localhost:8000/classify"
payload = {"images": [images[0]]}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(f"Status Code: {response.status_code}")
print("Response Text:")
print(response.text)