以下、コードです。名前は「main01.py」としていますが、こちらは「Python-Fu」のコンソールにコピペする方ですので、名前は何でも良いです。
では、大変ですが以下コピーしてお使いください。(何かうまいファイルの配布方法が有れば良いのですが・・・)
import os, sys, datetime
NENGETU01 = (2024,1)
NENGETU_POS01 = (50,50)
NENGETU_HEIGHT01 = 50
YOUB_POS01 = (80,580,30)
SUUJI_POS01 = (63,640,100,670)
MOJI_POS01 = (48,682)
POINT_POS01 = (110,650,140,680)
WAKU_SIZ01 = (100,76.7)
SUUJI_ZOKU01 = (50,)
SYUU_START01 = 6
MOJI_ZOKU01 = ("Sans",10)
MOJI_NEN01, MOJI_TUKI01 = "nen01.png", "tuki01.png"
DIR01 = "D:\calender01"
KINENBI01 = (
100,5,"この行は消さないでね!","",
1,1,"","gantan.png",
1,12,"結婚記念日","tan_b01.png",
1,15,"花子誕生日","hana01.png",
1,16,"かすみ誕生日","tan.png",
2,25,"太郎誕生日","",
)
F_BACK01 = os.path.join(DIR01,"calender01.png")
F_OUT01 = os.path.join(DIR01,"Calender%d%02d.xcf" % (NENGETU01[0], NENGETU01[1]))
CONF01 = dict(NENGETU01 = NENGETU01,NENGETU_POS01 = NENGETU_POS01,
NENGETU_HEIGHT01 = NENGETU_HEIGHT01, YOUB_POS01 = YOUB_POS01,
SYUU_START01 = SYUU_START01, SUUJI_POS01 = SUUJI_POS01,
SUUJI_ZOKU01 = SUUJI_ZOKU01, MOJI_POS01 = MOJI_POS01, WAKU_SIZ01 = WAKU_SIZ01,
POINT_POS01 = POINT_POS01, MOJI_ZOKU01 = MOJI_ZOKU01,
MOJI_NEN01 = MOJI_NEN01, MOJI_TUKI01 = MOJI_TUKI01,
DIR01 = DIR01, KINENBI01 = KINENBI01)
sys.path.append(DIR01)
import date_prc01
img_back01 = pdb.gimp_file_load(F_BACK01, "")
tmp01 = pdb.gimp_image_get_active_drawable (img_back01)
pdb.gimp_xcf_save(0,img_back01, tmp01, F_OUT01, F_OUT01)
XCF_OUT01 = pdb.gimp_xcf_load(0,F_OUT01,F_OUT01)
img_num01 = []
img_wed01 = []
def kakunou01():
for i in range (10):
in_f_nam01 = "d%02d.png" % i
img_tmp01 = os.path.join(DIR01,in_f_nam01)
img_num01.append(pdb.gimp_file_load(img_tmp01, ""))
for i in range (7):
in_f_nam01 = "wd%02d.png" % i
img_tmp01 = os.path.join(DIR01,in_f_nam01)
img_wed01.append(pdb.gimp_file_load(img_tmp01, ""))
def lay_from_num01(i_num01, i_num02, month01, day01):
i_width_num01 = pdb.gimp_image_width(i_num01)
i_height_num01 = pdb.gimp_image_height(i_num01)
i_width_num02 = pdb.gimp_image_width(i_num02)
i_height_num02 = pdb.gimp_image_height(i_num02)
if day01 >9:
lay01_act01 = pdb.gimp_layer_new_from_visible(i_num01,XCF_OUT01, "D%02d%02d" % (month01, day01))
pdb.gimp_image_insert_layer(XCF_OUT01,lay01_act01,None,-1)
lay01_act02 = pdb.gimp_layer_new_from_visible(i_num02,XCF_OUT01, "tmp01")
pdb.gimp_image_insert_layer(XCF_OUT01,lay01_act02,None,-1)
takasa01 = (i_height_num01 - i_height_num02)/2
pdb.gimp_layer_set_offsets(lay01_act02, i_width_num01, takasa01)
ret_layer01 = pdb.gimp_image_merge_down(XCF_OUT01, lay01_act02, 0)
else:
lay01_act01 = pdb.gimp_layer_new(XCF_OUT01, i_width_num02*2,
i_height_num02, 1, "D%02d%02d" % (month01, day01), 100, 0)
pdb.gimp_image_insert_layer(XCF_OUT01,lay01_act01,None,-1)
lay01_act02 = pdb.gimp_layer_new_from_visible(i_num02,XCF_OUT01, "tmp01")
pdb.gimp_image_insert_layer(XCF_OUT01,lay01_act02,None,-1)
takasa01 = 0
pdb.gimp_layer_set_offsets(lay01_act02, i_width_num02/2, takasa01)
ret_layer01 = pdb.gimp_image_merge_down(XCF_OUT01, lay01_act02, 0)
return ret_layer01
def lay_put_num01(CONF01):
waku01 = list(date_prc01.make_waku01(CONF01))
for l01 in waku01:
month01 = l01["calender_month01"]
day01 = l01["calender_day01"]
opacity01 = l01["opacity01"]
num_2keta = int(day01/10)
num_1keta = day01 - num_2keta * 10
layer_tmp01 = lay_from_num01(img_num01[num_2keta], img_num01[num_1keta] ,month01,day01)
pdb.gimp_item_transform_scale(layer_tmp01, l01["suu_up_x01"], l01["suu_up_y01"],l01["suu_dw_x01"],l01["suu_dw_y01"])
pdb.gimp_layer_set_opacity(layer_tmp01, opacity01)
if l01["day_red01"] == True:
pdb.gimp_drawable_color_balance(layer_tmp01, 0, FALSE, 100, 0, 0)
elif l01["day_blue01"] == True:
pdb.gimp_drawable_color_balance(layer_tmp01, 0, FALSE, 0, 0, 100)
txt_tmp01 = l01["syukujitu_bun01"] + l01["kinenbi_bun01"]
if len(txt_tmp01) > 0:
text_layer01 = pdb.gimp_text_fontname(XCF_OUT01, None, l01["moji_x01"],l01["moji_y01"],
txt_tmp01, 1, TRUE, MOJI_ZOKU01[1], 0, MOJI_ZOKU01[0])
pdb.gimp_text_layer_resize(text_layer01, WAKU_SIZ01[0], MOJI_ZOKU01[1]*2)
pdb.gimp_text_layer_set_justification(text_layer01, 2)
if l01["kinenbi_png01"] <> "":
img_tmp02 = os.path.join(DIR01,l01["kinenbi_png01"])
layer_tmp02 = pdb.gimp_file_load_layer(XCF_OUT01, img_tmp02)
pdb.gimp_image_insert_layer(XCF_OUT01,layer_tmp02,None,-1)
pdb.gimp_item_transform_scale(layer_tmp02, l01["point_up_x01"], l01["point_up_y01"],l01["point_dw_x01"],l01["point_dw_y01"])
def print_week01(CONF01):
kd01 = CONF01["SYUU_START01"]
for i in range(7):
i_wek01 = img_wed01[kd01]
i_width_wek01 = pdb.gimp_image_width(i_wek01)
i_height_wek01 = pdb.gimp_image_height(i_wek01)
lay01_act01 = pdb.gimp_layer_new_from_visible(i_wek01,XCF_OUT01, "wd%02d" % kd01)
pdb.gimp_image_insert_layer(XCF_OUT01,lay01_act01,None,-1)
rate01 = float(float(CONF01["YOUB_POS01"][2])/i_height_wek01)
scale_x01, scale_y01 = rate01, rate01
source_x01, source_y01 = i_width_wek01/2, i_height_wek01/2
dest_x01 = CONF01["YOUB_POS01"][0] + CONF01["WAKU_SIZ01"][0]*i + i_width_wek01*rate01/2
dest_y01 = CONF01["YOUB_POS01"][1] + i_height_wek01*rate01/2
lay_wek_f010 = pdb.gimp_item_transform_2d(lay01_act01, source_x01, source_y01, scale_x01, scale_y01, 0, dest_x01, dest_y01)
if kd01 >= 6:
kd01 = 0
else:
kd01 += 1
def print_nen_getu01(CONF01):
nen_tmp01 = CONF01["NENGETU01"][0]
nen_keta4 = nen_tmp01//1000
nen_keta3 = (nen_tmp01 - nen_keta4*1000)//100
nen_keta2 = (nen_tmp01 - nen_keta4*1000 - nen_keta3*100)//10
nen_keta1 = nen_tmp01 - nen_keta4*1000 - nen_keta3*100 - nen_keta2*10
lay_nen01 = lay_from_num01(img_num01[nen_keta4], img_num01[nen_keta3], 99, 11)
lay_nen02 = lay_from_num01(img_num01[nen_keta2], img_num01[nen_keta1], 99, 22)
tuki_tmp01 = CONF01["NENGETU01"][1]
tuki_keta2 = int(tuki_tmp01/10)
tuki_keta1 = int(tuki_tmp01 - tuki_keta2*10)
lay_tuki01 = lay_from_num01(img_num01[tuki_keta2], img_num01[tuki_keta1], 99, tuki_tmp01)
tmp01 = os.path.join(CONF01["DIR01"], CONF01["MOJI_NEN01"])
moji_nen01 = pdb.gimp_file_load_layer(XCF_OUT01, tmp01)
pdb.gimp_image_insert_layer(XCF_OUT01,moji_nen01,None,-1)
tmp01 = os.path.join(CONF01["DIR01"], CONF01["MOJI_TUKI01"])
moji_tuki01 = pdb.gimp_file_load_layer(XCF_OUT01, tmp01)
pdb.gimp_image_insert_layer(XCF_OUT01,moji_tuki01,None,-1)
lay_nen_f01 = layer_comb01(lay_nen01, lay_nen02, 1)
lay_nen_f01 = layer_comb01(lay_nen_f01, moji_nen01, 2)
lay_nen_f01 = layer_comb01(lay_nen_f01, lay_tuki01, 1)
lay_nen_f01 = layer_comb01(lay_nen_f01, moji_tuki01, 2)
pdb.gimp_item_set_name(lay_nen_f01, "nengetu01")
l_width_lay01 = pdb.gimp_drawable_width(lay_nen_f01)
l_height_lay01 = pdb.gimp_drawable_height(lay_nen_f01)
rate01 = float(float(CONF01["NENGETU_HEIGHT01"])/l_height_lay01)
source_x01, source_y01 = l_width_lay01/2, l_height_lay01/2
scale_x01, scale_y01 = rate01, rate01
dest_x01 = CONF01["NENGETU_POS01"][0] + l_width_lay01*rate01/2
dest_y01 = CONF01["NENGETU_POS01"][1] + l_height_lay01*rate01/2
lay_nen_f010 = pdb.gimp_item_transform_2d(lay_nen_f01, source_x01, source_y01, scale_x01, scale_y01, 0, dest_x01, dest_y01)
def layer_comb01(arg_lay01, arg_lay02, flg01):
l_width_lay01 = pdb.gimp_drawable_width(arg_lay01)
l_height_lay01 = pdb.gimp_drawable_height(arg_lay01)
l_width_lay02 = pdb.gimp_drawable_width(arg_lay02)
l_height_lay02 = pdb.gimp_drawable_height(arg_lay02)
takasa01 = (l_height_lay01 - l_height_lay02)/2
if flg01 <> 1:
ret_width_lay02 = l_width_lay02*l_height_lay01/l_height_lay02
pdb.gimp_layer_scale(arg_lay02, ret_width_lay02, l_height_lay01, False)
takasa01 = 0
pdb.gimp_image_raise_item_to_top(XCF_OUT01, arg_lay01)
pdb.gimp_image_raise_item_to_top(XCF_OUT01, arg_lay02)
pdb.gimp_layer_set_offsets(arg_lay02, l_width_lay01, takasa01)
ret_layer01 = pdb.gimp_image_merge_down(XCF_OUT01, arg_lay02, 0)
return(ret_layer01)
def main01():
kakunou01()
lay_put_num01(CONF01)
print_week01(CONF01)
print_nen_getu01(CONF01)
main01()
disp01 = pdb.gimp_display_new(XCF_OUT01)
pass