import sys import os from os import listdir from os.path import isfile, join from PIL import Image, ImageEnhance, ImageDraw #from PIL import import shutil # 0:NORMAL, 1:HOVER, 2:PRESSED, 3:DISABLED TYPE_BUTTON = 0 TYPE_STATIC = 1 TYPE_STATIC2 = 2 # NORMAL 2 가 존재함 TYPE_STATIC3 = 3 # NORMAL-> ALPHA DISABLE (3) 생성 #src_path = 'C:\\home\\roadmovie\\project\\fm_viewer\\res\\fmproject\\guide.jpg' src_path_guide = 'C:\\home\\temp\\image\\nexian_src\\nexian_guide.png' src_path_normal = 'C:\\home\\temp\\image\\nexian_src\\nexian_normal.png' src_path_normal2 = 'C:\\home\\temp\\image\\nexian_src\\nexian_normal2.png' src_path_focused = 'C:\\home\\temp\\image\\nexian_src\\nexian_focused.png' src_path_pressed = 'C:\\home\\temp\\image\\nexian_src\\nexian_selected.png' src_path_disabled = 'C:\\home\\temp\\image\\nexian_src\\nexian_disable.png' target_path = 'C:\\home\\temp\\image\\nexian\\' #target_path = r'C:\home\roadmovie\project\fm_viewer\res\emt_kr' crop_info = [ ('title_bg',(0,0,1,42),TYPE_STATIC), ('title_logo',(8,5,145,33),TYPE_STATIC), ('title_report',(736,3,36,36),TYPE_BUTTON), ('title_split',(774,3,36,36),TYPE_BUTTON), ('title_capture',(812,3,36,36 ),TYPE_BUTTON), ('title_map',(850,3,36,36 ),TYPE_BUTTON), ('title_setup',(888,3,36,36),TYPE_BUTTON), ('title_info',(926,3,36,36),TYPE_BUTTON), ('title_minimize',(974,3,36,36),TYPE_BUTTON), ('title_close',(1012,3,36,36),TYPE_BUTTON), ('title_maximize',(661,3,36,36),TYPE_BUTTON), ('title_seperator',(966,3,5,36),TYPE_STATIC), ('title_normal',(698,3,36,36),TYPE_BUTTON), ('title_video_front',(5,51,107,20),TYPE_STATIC), ('title_video_rear',(699,51,107,20),TYPE_STATIC), ('vt_swap',(547,48,30,26),TYPE_BUTTON), ('vt_flip_h',(583,48,30,26),TYPE_BUTTON), ('vt_flip_v',(620,48,30,26),TYPE_BUTTON), ('vt_fullscreen',(656,48,30,26),TYPE_BUTTON), ('vt_fullscreen_checked',(511,48,30,26),TYPE_BUTTON), ('vt_ch3',(475,48,30,26),TYPE_BUTTON), ('vt_ch3_checked',(869,48,30,26),TYPE_BUTTON), ('vt_360wide',(438,48,30,26),TYPE_BUTTON), ('vt_360normal',(402,48,30,26),TYPE_BUTTON), ('logo_front_big',(189,117,320,320),TYPE_STATIC2), ('logo_rear_small',(746,135,260,95),TYPE_STATIC), ('logo_rear_big',(189,117,320,320),TYPE_STATIC2), ('logo_front_small',(746,135,260,95),TYPE_STATIC), ('title_list',(699,312,136,22),TYPE_STATIC), ('backup',(1001,311,44,24),TYPE_BUTTON), ('type_all',(710,337,49,26),TYPE_STATIC3), ('type_normal',(787,337,31 ,26),TYPE_STATIC3), ('type_manual',(854,337,31,26),TYPE_STATIC3), ('type_event',(906,337,59,26),TYPE_STATIC3), ('type_park',(973,337,66,26),TYPE_STATIC3), ('slider_knob',(365,466,8,18),TYPE_BUTTON), ('slider_knob_small',(92,583,4,14),TYPE_BUTTON), ('v_constrast',(12,575,30,30),TYPE_BUTTON), ('v_brightness',(177,575,30,30),TYPE_BUTTON), ('v_volume',(340,575,30,30),TYPE_BUTTON), ('v_volume_checked',(340,545,30,30),TYPE_BUTTON), ('v_speed',(503,575,30,30),TYPE_BUTTON), ('sensor_x',(94,497,30,25),TYPE_BUTTON), ('sensor_y',(94,522,30,25),TYPE_BUTTON), ('sensor_z',(94,547,30,25),TYPE_BUTTON), ('speed_kmh',(6,548,87,23),TYPE_BUTTON), ('speed_mph',(6,525,87,23),TYPE_BUTTON), ('graph_up',(663,498,28,36),TYPE_BUTTON), ('graph_down',(663,535,28,36),TYPE_BUTTON), ('graph_seperator',(663,533,28,3),TYPE_STATIC), ('play_bg',(5,605,1,71),TYPE_STATIC), ('play_stop',(22,611,62,62),TYPE_BUTTON), # 1 ('play_play',(94,611,62,62),TYPE_BUTTON), # 2 ('play_previous',(166,611,62,62),TYPE_BUTTON), # 3 ('play_backward',(238,611,62,62),TYPE_BUTTON), # 4 ('play_play_checked',(310,611,62,62),TYPE_BUTTON), # 5 ('play_forward',(382,611,62,62),TYPE_BUTTON), # 6 ('play_next',(454,611,62,62),TYPE_BUTTON), # 7 ('play_seperator',(570,606,3,70),TYPE_STATIC), ('open',(572,606,121,70),TYPE_BUTTON), ] def cropImages(): src_normal = Image.open(src_path_normal) src_normal2 = Image.open(src_path_normal2) src_focused = Image.open(src_path_focused) src_pressed = Image.open(src_path_pressed) src_disabled = Image.open(src_path_disabled) #print(src) #images = list(crop_info.keys()) for each_image in crop_info: title = each_image[0] #print(each_image,crop_info[each_image]) crop = each_image[1] control_type = each_image[2] if control_type == TYPE_STATIC2: im = src_normal2.crop((crop[0],crop[1],crop[0]+crop[2],crop[1]+crop[3])) else: im = src_normal.crop((crop[0],crop[1],crop[0]+crop[2],crop[1]+crop[3])) # libpng warning: iCCP: known incorrect sRGB profile 에러 제거? #im.info.pop('icc_profile', None) dest_path = join(target_path, title + '.png') print(dest_path) im.save(dest_path,'PNG',icc_profile=None) if control_type == TYPE_STATIC3: im3 = im.copy() alpha = im3.split()[3] alpha = ImageEnhance.Brightness(alpha).enhance(0.5) im3.putalpha(alpha) dest_path = join(target_path, title + '_3.png') im3.save(dest_path,'PNG',icc_profile=None) continue if control_type != TYPE_BUTTON: continue im = src_focused.crop((crop[0],crop[1],crop[0]+crop[2],crop[1]+crop[3])) im.save(join(target_path, title + '_1.png'),'PNG',icc_profile=None) im = src_pressed.crop((crop[0],crop[1],crop[0]+crop[2],crop[1]+crop[3])) im.save(join(target_path, title + '_2.png'),'PNG',icc_profile=None) im = src_disabled.crop((crop[0],crop[1],crop[0]+crop[2],crop[1]+crop[3])) im.save(join(target_path, title + '_3.png'),'PNG',icc_profile=None) return def guideImages(): src = Image.open(src_path_guide) draw = ImageDraw.Draw(src, "RGBA") for each_image in crop_info: #title = each_image[0] crop = each_image[1] control_type = each_image[2] if control_type is TYPE_BUTTON: line_color = (255,0,255) else: line_color = (0,255,255) draw.rectangle(((crop[0], crop[1]),(crop[0]+crop[2]-1, crop[1]+crop[3]-1)),outline=line_color,width=1,fill=(None)) dest_path = join(r'C:\home\temp\image\nexian_src','guide_processed.png') src.save(dest_path,'PNG') cropImages() #guideImages()