File size: 1,822 Bytes
c3adbf1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
#!/usr/bin/env python3
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))
|