| |
| import io |
| import json |
| import uuid |
| import requests |
| import base64 |
| from PIL import Image |
|
|
| URL = 'http://127.0.0.1:5000/faceswap' |
|
|
| SOURCE_IMAGE = '../data/src.jpg' |
| TARGET_IMAGE = '../data/target.jpg' |
| SOURCE_INDEXES = '-1' |
| TARGET_INDEXES = '-1' |
| BACKGROUND_ENHANCE = True |
| FACE_RESTORE = True |
| FACE_UPSAMPLE = True |
| UPSCALE = 1 |
| CODEFORMER_FIDELITY = 0.5 |
| OUTPUT_FORMAT = 'JPEG' |
|
|
|
|
| def encode_image_to_base64(image_path): |
| with open(image_path, 'rb') as image_file: |
| return base64.b64encode(image_file.read()).decode('utf-8') |
|
|
|
|
| def save_result_image(resp_json): |
| img = Image.open(io.BytesIO(base64.b64decode(resp_json['output']['image']))) |
| output_file = f'{uuid.uuid4()}.jpg' |
|
|
| with open(output_file, 'wb') as f: |
| print(f'Saving image: {output_file}') |
| img.save(f, format='JPEG') |
|
|
|
|
| if __name__ == '__main__': |
| payload = { |
| "source_image": encode_image_to_base64(SOURCE_IMAGE), |
| "target_image": encode_image_to_base64(TARGET_IMAGE), |
| "source_indexes": SOURCE_INDEXES, |
| "target_indexes": TARGET_INDEXES, |
| "background_enhance": BACKGROUND_ENHANCE, |
| "face_restore": FACE_RESTORE, |
| "face_upsample": FACE_UPSAMPLE, |
| "upscale": UPSCALE, |
| "codeformer_fidelity": CODEFORMER_FIDELITY, |
| "output_format": OUTPUT_FORMAT |
| } |
|
|
| r = requests.post( |
| URL, |
| json=payload |
| ) |
|
|
| print(f'HTTP status code: {r.status_code}') |
|
|
| resp_json = r.json() |
|
|
| if r.status_code == 200: |
| img = Image.open(io.BytesIO(base64.b64decode(resp_json['image']))) |
| output_file = f'{uuid.uuid4()}.jpg' |
|
|
| with open(output_file, 'wb') as f: |
| print(f'Saving image: {output_file}') |
| img.save(f, format='JPEG') |
| else: |
| print(json.dumps(resp_json, indent=4, default=str)) |
|
|