| | |
| | 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)) |
| |
|