from PIL import Image
import os
import glob
def merge_images():
resize_factor1 = 1.5 # Resize factor for special images
resize_factor2 = 1.3 # Resize factor for special images
resize_factor3 = 1.15 # Resize factor for special images
watermark = Image.open("2.png").convert("RGBA")
background = Image.open("1.jpg").convert("RGBA")
subfolders = [f.path for f in os.scandir() if f.is_dir()]
for subfolder in subfolders:
bw_file = glob.glob(os.path.join(subfolder, "*-bw-*.png"))
color_file = glob.glob(os.path.join(subfolder, "*-color-*.png"))
if not bw_file or not color_file:
continue # Skip if either of the files are not found
files = [color_file[0], bw_file[0]] # Ensuring color image is on the left
images = []
for file in files:
im = Image.open(file).convert("RGBA")
# Check for special numbered files and process accordingly
base = os.path.basename(file)
num = base.split('-')[0]
if num in ['005', '007', '029', '033', '034', '035', '039', '040', '042', '043', '048', '057', '058', '061', '062', '067', '079', '082', '083', '084', '086', '088', '089', '090', '096', '097', '098', '099', '101', '112', '113', '115', '133', '138', '141', '151', '152', '154', '155', '156', '163', '164', '184']:
new_size = (int(im.width * resize_factor1), int(im.height * resize_factor1))
im = im.resize(new_size) # Resize the image
left = (im.width - 2000) // 2
right = (im.width + 2000) // 2
im = im.crop((left, 0, right, im.height)) # Crop the image
# Check for special numbered files and process accordingly 2
base = os.path.basename(file)
num = base.split('-')[0]
if num in ['038','049','051','063','072','073','076','077','078','080','119','121','127','128','150','153','157','168','172']:
new_size = (int(im.width * resize_factor2), int(im.height * resize_factor2))
im = im.resize(new_size) # Resize the image
left = (im.width - 2000) // 2
right = (im.width + 2000) // 2
im = im.crop((left, 0, right, im.height)) # Crop the image
# Check for special numbered files and process accordingly 3
base = os.path.basename(file)
num = base.split('-')[0]
if num in ['144','145','147']:
new_size = (int(im.width * resize_factor3), int(im.height * resize_factor3))
im = im.resize(new_size) # Resize the image
left = (im.width - 2000) // 2
right = (im.width + 2000) // 2
im = im.crop((left, 0, right, im.height)) # Crop the image
images.append(im)
widths, heights = zip(*(i.size for i in images))
total_width = sum(widths)
max_height = max(heights)
new_img = Image.new('RGBA', (total_width, max_height))
x_offset = 0
for img in images:
y_offset = (max_height - img.height) // 2
new_img.paste(img, (x_offset, y_offset))
x_offset += img.width
# Resize the merged image
new_img = new_img.resize((2000, int(2000 * new_img.height / new_img.width)))
# Crop the image to 2000x1500
top = (new_img.height - 1500) // 2
bottom = (new_img.height + 1500) // 2
new_img = new_img.crop((0, top, 2000, bottom))
# Apply shadow effect
new_img = shadow(new_img, 0.65, 21, 25, 0.9)
# Paste the new image onto the background
bg_copy = background.copy()
bg_copy.paste(new_img, (bg_copy.width // 2 - new_img.width // 2, bg_copy.height // 2 - new_img.height // 2), new_img)
# Apply the watermark
bg_copy.paste(watermark, (0, 0), watermark)
# Save the image with a new name
new_name = color_file[0].replace("Photo-", "Photo-2-1-").replace(".png", ".jpg")
bg_copy.convert("RGB").save(new_name, "JPEG", quality=85)
merge_images()
“Я не программист и Python не знаю”.
Почитав статью, для 90% людей вы именно программист и есть😂
Наверное, но написать ничего не могу. Ну т.е. знание языка у меня примерно ноль.
Это легко поправить, но это время и изменение образа жизни. В программирование нельзя вкатиться на «полшишечки».
Осталось научить читать его спецификации API и фигачить сервисы на их основе, и всё будет ваще зашибись.
Ну вот сейчас они делают плагины и один из них это доступ к интернет. Можно будет скармливать документацию по API (надеюсь).
В этом нет проблем, оплачиваешь OpenAI API, быстренько накидываешь скрипт на питоне который векторзирует спецификации твоего API (о котором реальный chat gpt не знает). И задаёшь по нему вопросы, просишь написать код. Делов на часик
Понятный хрен на питоне такое проще всего сделать, для "одноразовых" скриптов он идеален. Но везде есть свои плюсы и минусы. Например на питоне полноценное настольные приложение с графическим интерфейсом сделать это лютый геморрой и извращение. А вот на Яве как два пальца об асфальт. )
Десктопное приложение на яве тоже извращение