Spaces:
Sleeping
Sleeping
| import io | |
| import numpy as np | |
| from PIL import Image | |
| def prepare_image(image_file): | |
| """ | |
| Accepts a Pillow image or file-like object and returns variations for downstream tasks. | |
| Validates image format and strips metadata. | |
| """ | |
| # Load image and strip metadata by recreating it | |
| img = Image.open(image_file).convert('RGB') | |
| # Recreate image to strip EXIF/metadata | |
| data = list(img.getdata()) | |
| clean_img = Image.new(img.mode, img.size) | |
| clean_img.putdata(data) | |
| # 1. Grayscale numpy array for FFT | |
| grayscale_img = clean_img.convert('L') | |
| grayscale_array = np.array(grayscale_img) | |
| # 2. 90% quality JPEG compression in memory for ELA | |
| buffer = io.BytesIO() | |
| clean_img.save(buffer, format='JPEG', quality=90) | |
| buffer.seek(0) | |
| ela_jpeg_img = Image.open(buffer).convert('RGB') | |
| # 3. Standard RGB image | |
| rgb_img = clean_img | |
| return grayscale_array, ela_jpeg_img, rgb_img | |