330 lines
14 KiB
Python
330 lines
14 KiB
Python
# --- package ---
|
|
# --- custom_module ---
|
|
import sys
|
|
|
|
# 20260507 tak will be check
|
|
#sys.path.append('C:/Users/Administrator/PycharmProjects/pythonProject/20230426/cmd/image_editor')
|
|
|
|
# --- custom ---
|
|
from custom_lib import Custom_Lib as custom
|
|
|
|
# --- common ---
|
|
import os
|
|
from datetime import datetime
|
|
from pathlib import Path
|
|
import sys
|
|
|
|
def main():
|
|
print(f'{company_name} {prm_title} v{prm_ver}\n'
|
|
f'(c) {company_name}. All rights reserved.\n'
|
|
f'System information as of {sys_date}\n')
|
|
|
|
exit_flag = False
|
|
|
|
while not exit_flag:
|
|
print(f'\n[Exec]\n'
|
|
f'[1] {typ1}\n'
|
|
f'[2] {typ2}\n'
|
|
f'[3] {typ3}\n'
|
|
f'[4] {typ4}\n'
|
|
f'[5] {typ5}')
|
|
|
|
try:
|
|
input_exec = input('> ')
|
|
|
|
if input_exec == 'exit':
|
|
exit_flag = True
|
|
|
|
elif input_exec == '1':
|
|
while not exit_flag:
|
|
print(f'[{typ1}]\nInput HEX or RGB Code\n[9] back')
|
|
|
|
input_exec1 = input('> ')
|
|
|
|
if input_exec1 == 'exit':
|
|
exit_flag = True
|
|
break
|
|
|
|
elif len(input_exec1) == 6 and input_exec1.count(' ') == 0:
|
|
hex2rgb = custom.my_image.hex_to_rgb(input_exec1)
|
|
rgb_name = custom.my_image.get_color_name(hex2rgb)
|
|
log.info(f'HEX #{input_exec1}')
|
|
log.info(f'RGB {hex2rgb[0]} {hex2rgb[1]} {hex2rgb[2]}')
|
|
log.info(f'Name {rgb_name}')
|
|
|
|
elif input_exec1.count(' ') == 2:
|
|
rgb_var = tuple(map(int, input_exec1.split()))
|
|
rgb2hex = custom.my_image.rgb_to_hex(rgb_var)
|
|
hex2rgb = custom.my_image.hex_to_rgb(rgb2hex)
|
|
rgb_name = custom.my_image.get_color_name(hex2rgb)
|
|
log.info(f'HEX #{rgb2hex}')
|
|
log.info(f'RGB {input_exec1}')
|
|
log.info(f'Name {rgb_name}')
|
|
|
|
elif input_exec1 == '9':
|
|
break
|
|
|
|
else:
|
|
log.error('Invalid HEX or RGB Code')
|
|
|
|
elif input_exec == '2':
|
|
while not exit_flag:
|
|
print(f'[{typ2}]\n[1] Width\n[2] Height\n[9] back')
|
|
|
|
input_exec2 = input('> ')
|
|
|
|
if input_exec2 == 'exit':
|
|
exit_flag = True
|
|
break
|
|
|
|
elif input_exec2 == '1':
|
|
while not exit_flag:
|
|
print(f'[{typ2}]\nInput Width\n[9] back')
|
|
|
|
input_exec2_1 = input('> ')
|
|
|
|
if input_exec2_1 == 'exit':
|
|
exit_flag = True
|
|
break
|
|
|
|
elif input_exec2_1 != '' and input_exec2_1 != 'exit' and input_exec2_1 != '9':
|
|
imp_file_list = os.listdir(imp_resize_path)
|
|
imp_file_list.remove('raw_data')
|
|
|
|
if imp_file_list:
|
|
for imp_file in imp_file_list:
|
|
imp_file_var = os.path.join(imp_resize_path, imp_file).replace('\\', '/')
|
|
a = custom.my_image.image_resize(imp_resize_path, imp_resize_raw_path, exp_resize_path, imp_file_var, 'W', int(input_exec2_1))
|
|
log.info(a)
|
|
|
|
break
|
|
|
|
else:
|
|
log.error('Not Found Image')
|
|
|
|
elif input_exec2_1 == '9':
|
|
break
|
|
|
|
else:
|
|
log.error('Invalid Width')
|
|
|
|
elif input_exec2 == '2':
|
|
while not exit_flag:
|
|
print(f'[{typ2}]\nInput Height\n[9] back')
|
|
|
|
input_exec2_2 = input('> ')
|
|
|
|
if input_exec2_2 == 'exit':
|
|
exit_flag = True
|
|
break
|
|
|
|
elif input_exec2_2 != '' and input_exec2_2 != 'exit' and input_exec2_2 != '9':
|
|
imp_file_list = os.listdir(imp_resize_path)
|
|
imp_file_list.remove('raw_data')
|
|
|
|
if imp_file_list:
|
|
for imp_file in imp_file_list:
|
|
imp_file_var = os.path.join(imp_resize_path, imp_file).replace('\\', '/')
|
|
a = custom.my_image.image_resize(imp_resize_path, imp_resize_raw_path,
|
|
exp_resize_path, imp_file_var, 'H',
|
|
int(input_exec2_2))
|
|
|
|
log.info(a)
|
|
|
|
break
|
|
|
|
else:
|
|
log.error('Not Found Image')
|
|
|
|
elif input_exec2_2 == '9':
|
|
break
|
|
|
|
else:
|
|
log.error('Invalid Height')
|
|
|
|
elif input_exec2 == '9':
|
|
break
|
|
|
|
else:
|
|
log.error('Invalid Width or Height')
|
|
|
|
elif input_exec == '3':
|
|
while not exit_flag:
|
|
imp_file_list = os.listdir(imp_icon_path)
|
|
imp_file_list.remove('raw_data')
|
|
|
|
if imp_file_list:
|
|
for imp_file in imp_file_list:
|
|
imp_file_var = os.path.join(imp_icon_path, imp_file).replace('\\', '/')
|
|
a = custom.my_image.distribute_serveral_png(imp_icon_path, imp_icon_raw_path,
|
|
exp_icon_path, imp_file_var)
|
|
|
|
log.info(a)
|
|
|
|
# imp_file_var = os.path.join(imp_icon_path, imp_file).replace('\\', '/')
|
|
# a = ateciot_image_core.bake_one_big_png_to_ico(imp_icon_path, imp_icon_raw_path,
|
|
# exp_icon_path, imp_file_var)
|
|
#
|
|
# log.info(a)
|
|
# a = ateciot_image_core.image_to_icon(imp_icon_path, imp_icon_raw_path,
|
|
# exp_icon_path, imp_file_var, int(input_exec3))
|
|
#
|
|
# log.info(a)
|
|
break
|
|
|
|
elif input_exec == '4':
|
|
while not exit_flag:
|
|
print(f'[{typ4}]\nInput Extension\n[9] back')
|
|
|
|
input_exec4 = input('> ')
|
|
|
|
if input_exec4 == 'exit':
|
|
exit_flag = True
|
|
break
|
|
|
|
elif input_exec4 == 'png' or input_exec4 == 'gif' or input_exec4 == 'jpeg' or input_exec4 == 'jpg' or input_exec4 == 'bmp':
|
|
imp_file_list = os.listdir(imp_extension_path)
|
|
imp_file_list.remove('raw_data')
|
|
|
|
if imp_file_list:
|
|
for imp_file in imp_file_list:
|
|
imp_file_var = os.path.join(imp_extension_path, imp_file).replace('\\', '/')
|
|
a = custom.my_image.image_to_extension(imp_extension_path, imp_extension_raw_path,
|
|
exp_extension_path, imp_file_var, input_exec4)
|
|
log.info(a)
|
|
break
|
|
|
|
elif input_exec4 == '9':
|
|
break
|
|
|
|
else:
|
|
log.error(f'Option verification failed, please try again.')
|
|
|
|
elif input_exec == '5':
|
|
while not exit_flag:
|
|
print(f'[{typ5}]\n[1] Image to Base64\n[2] Base64 to Image\n[9] back')
|
|
|
|
input_exec5 = input('> ')
|
|
|
|
if input_exec5 == 'exit':
|
|
exit_flag = True
|
|
break
|
|
|
|
elif input_exec5 == '1':
|
|
imp_file_list = os.listdir(imp_base64_path)
|
|
imp_file_list.remove('raw_data')
|
|
|
|
if imp_file_list:
|
|
for imp_file in imp_file_list:
|
|
if '.png' in imp_file or '.gif' in imp_file or '.jpeg' in imp_file or '.jpg' in imp_file or '.bmp' in imp_file:
|
|
imp_file_var = os.path.join(imp_base64_path, imp_file).replace('\\', '/')
|
|
a, b, c = custom.my_image.image_to_base64(imp_base64_path, imp_base64_raw_path, exp_base64_path, imp_file_var)
|
|
with open(f'{c}.txt', "w") as f:
|
|
f.write(a)
|
|
log.info(b)
|
|
|
|
else:
|
|
log.error('Image to Base64-Not Found Image')
|
|
|
|
elif input_exec5 == '2':
|
|
imp_file_list = os.listdir(imp_base64_path)
|
|
imp_file_list.remove('raw_data')
|
|
|
|
if imp_file_list:
|
|
for imp_file in imp_file_list:
|
|
if '.txt' in imp_file:
|
|
imp_file_var = os.path.join(imp_base64_path, imp_file).replace('\\', '/')
|
|
with open(imp_file_var, "r") as f:
|
|
line = f.read()
|
|
a = custom.my_image.base64_to_image(imp_base64_raw_path, exp_base64_path, line, imp_file_var, f)
|
|
log.info(a)
|
|
|
|
else:
|
|
log.error('Base64 to Image-Not Found Text')
|
|
|
|
elif input_exec5 == '9':
|
|
break
|
|
|
|
else:
|
|
log.error(f'Option verification failed, please try again.')
|
|
|
|
else:
|
|
log.error(f'Option verification failed, please try again.')
|
|
|
|
except Exception as e:
|
|
log.error(e)
|
|
|
|
# --- prm_info_variables ---
|
|
company_name = 'ATEC IoT'
|
|
prm_title = Path(os.path.basename(sys.argv[0])).stem.replace('_', ' ')
|
|
|
|
prm_renew_ver = 1
|
|
prm_modify_ver = 0
|
|
prm_bug_ver = 0
|
|
prm_ver = f'{prm_renew_ver}.{prm_modify_ver}.{prm_bug_ver}'
|
|
|
|
prm_uuid = '6d36fd01-dcc4-11ed-9a10-0456e5df0ac9'
|
|
|
|
# --- type_variables ---
|
|
typ1 = 'Color Info'
|
|
typ2 = 'Image Resize'
|
|
typ3 = 'Image to Icon'
|
|
typ4 = 'Image Extension'
|
|
typ5 = 'Base64'
|
|
|
|
# --- path_variables ---
|
|
loc_path = os.getcwd()
|
|
imp_path = f"{loc_path}/import/"
|
|
imp_resize_path = f"{imp_path}resize/"
|
|
imp_resize_raw_path = f"{imp_resize_path}raw_data/"
|
|
imp_icon_path = f"{imp_path}icon/"
|
|
imp_icon_raw_path = f"{imp_icon_path}raw_data/"
|
|
imp_extension_path = f"{imp_path}extension/"
|
|
imp_extension_raw_path = f"{imp_extension_path}raw_data/"
|
|
imp_base64_path = f"{imp_path}base64/"
|
|
imp_base64_raw_path = f"{imp_base64_path}raw_data/"
|
|
|
|
exp_path = f"{loc_path}/export/"
|
|
exp_resize_path = f"{exp_path}resize/"
|
|
exp_resize_raw_path = f"{exp_resize_path}raw_data/"
|
|
exp_icon_path = f"{exp_path}icon/"
|
|
exp_extension_path = f"{exp_path}extension/"
|
|
exp_base64_path = f"{exp_path}base64/"
|
|
|
|
path_list = [imp_path,
|
|
imp_resize_path,
|
|
imp_resize_raw_path,
|
|
imp_icon_path,
|
|
imp_icon_raw_path,
|
|
imp_extension_path,
|
|
imp_extension_raw_path,
|
|
imp_base64_path,
|
|
imp_base64_raw_path,
|
|
exp_path,
|
|
exp_resize_path,
|
|
exp_resize_raw_path,
|
|
exp_icon_path,
|
|
exp_extension_path,
|
|
exp_base64_path]
|
|
|
|
# --- common_variables ---
|
|
datetime = datetime.now()
|
|
sys_date = datetime.strftime('%Y.%m.%d %H:%M:%S')
|
|
|
|
''' build command'''
|
|
# pyinstaller --specpath=.\20230426\app\spec\ --distpath=.\20230426\app\dist\ --workpath=.\20230426\app\build\ --name=Image_Editor -c -D C:\Users\Administrator\PycharmProjects\pythonProject\20230426\cmd\image_editor\Image_Editor.py --hidden-import=webcolors --hidden-import=PIL --hidden-import=cv2 --hidden-import=numpy --hidden-import=uuid --hidden-import=logging --paths="C:\Users\Administrator\PycharmProjects\pythonProject\venv\lib\site-packages\cv2\cv2.cp39-win_amd64.pyd"
|
|
# pyinstaller --distpath=.\ESL\app\dist\ --workpath=.\ESL\app\bulid\ -F C:\Users\ATECAP\PycharmProjects\pythonProject\ESL\app\spec\Weather_Crawling.spec
|
|
|
|
if __name__ == '__main__':
|
|
custom.init()
|
|
|
|
if prm_uuid != None:
|
|
log = custom.my_logger.logger()
|
|
try:
|
|
for file_path in path_list:
|
|
if not os.path.isdir(file_path):
|
|
os.makedirs(file_path)
|
|
main()
|
|
|
|
except Exception as e:
|
|
log.error(e) |