Привет! У меня есть алгоритм наложения и уникализации фото для бота telegram. Мне нужно добавить, чтобы перед сохранением итогового фото и отправкой пользователю, на итоговое фото накладывались в случайном порядке (т.е. со случайными углами наклона и случайными длинами) серые полосы шириной 1px, длиной до 30px и непрозрачностью 50%. Вот мой код: # Начало процесса смены фона
@dp.message_handler(lambda message: message.text == "Поменять фон", state="*")
async def change_background(message: types.Message, state: FSMContext):
    await PhotoState.waiting_for_user_photo.set()

    # Отправляем сообщение и ждем пользовательское фото
    await message.reply("Загрузите ваше фото. Если ничего не произошло или вы уже произвели смену фона, пропишите /start", reply_markup=types.ReplyKeyboardRemove())
    # Запоминаем, что пользователь начал процесс смены фона
    await state.update_data(changing_background=True)

    # Обновленная функция накладывания фотографий
@dp.message_handler(content_types=['photo'], state=PhotoState.waiting_for_user_photo)
async def overlay_photo_on_background(message: types.Message, state: FSMContext):
        user_photo_id = message.photo[-1].file_id
        conn = await get_db_connection()

        # Получаем случайное фото фона из БД
        cur = await conn.execute("SELECT id, photo_id FROM photos ORDER BY RANDOM() LIMIT 1")
        photo_info = await cur.fetchone()
        if photo_info is None:
            await message.answer("Нет доступных фоновых изображений.")
            await state.finish()
            return
        background_photo_id = photo_info[1]

        # Скачиваем фото фона и пользовательское фото
        background_data = await download_photo(background_photo_id)
        user_photo_data = await download_photo(user_photo_id)

        with Image.open(BytesIO(background_data)) as background, Image.open(BytesIO(user_photo_data)) as user_photo:
            # Пропорции и размеры для пользовательского фото с учетом отступов
            padding = 70
            new_user_width = user_photo.width + padding * 2
            new_user_height = user_photo.height + padding * 2
            user_photo.thumbnail((new_user_width, new_user_height), Image.Resampling.LANCZOS)

            background = background.convert("RGBA")
            # Рассчитываем новые пропорции для фона
            new_background_width = max(background.width, new_user_width)
            new_background_height = max(background.height, new_user_height)

            # Растягиваем фон до новых размеров
            background = background.resize((new_background_width, new_background_height), Image.Resampling.LANCZOS)

            # Применяем размытие Гаусса на 20% к фону
            background = background.filter(ImageFilter.GaussianBlur(radius=background.size[0] * 0.01))

            # Если пользовательское изображение не в формате RGBA, конвертируем его
            if user_photo.mode != 'RGBA':
                user_photo = user_photo.convert("RGBA")

                # Создаем маску прозрачности для альфа-канала
                mask = user_photo.split()[3]
            # Позиционируем пользовательское изображение по центру растянутого и размытого фона
            position = ((background.width - user_photo.width) // 2, (background.height - user_photo.height) // 2)
            background.paste(user_photo, position, user_photo)
            enhancer = ImageEnhance.Brightness(background)
            factor = random.uniform(0.7, 1.5)
            background = enhancer.enhance(factor)

            # Сохраняем результат в объект BytesIO
            result_image_io = BytesIO()
            background.save(result_image_io, format='PNG')
            result_image_io.seek(0)

        # Отправляем пользователю новое изображение
        await bot.send_photo(message.chat.id, photo=result_image_io)