Nano Hash - криптовалюты, майнинг, программирование

Почему это изображение PIL не перекрывает другое?

Я пытаюсь создать бота discord.py и сделать команду, которая отправляет изображение с аватаром цели и изображением руки поверх него. Однако это просто отправка их аватарки и ничего больше.

Мой код:

@commands.command()
    async def avatar(self, ctx, user : discord.Member):
        """User Avatar Testing"""
        filename = f"{user.name}#{user.discriminator}.png"
        await user.avatar_url.save(filename)
        fileslap = Image.open("assets/slap.png", "r")

        im = Image.open(filename)

        resized_im = im.resize((128,  128))

        img_w, img_h = fileslap.size
        bg_w, bg_h = resized_im.size

        offset = ((bg_w - img_w) // 2, (bg_h - img_h) // 2)
        resized_im.paste(fileslap, offset)
        resized_im.save(f"resized_{filename}")

        file = discord.File(fp=f"resized_{filename}")

        await ctx.send(file=file)
        os.remove(f"resized_{filename}")

Ответы:


1

Похоже, вы сохраняете и отправляете только изображение с измененным размером. Вы можете использовать resized_im.paste вместо im.paste.

11.01.2021
  • Кажется, это работает, но теперь происходит странная вещь. i.imgur.com/fYc2IwM.png 12.01.2021

  • 2

    Я сделал команду пощечины вот так. Он работает и дает правильный результат, если вы хотите сослаться на него.

    @commands.command()
        async def slap(self,ctx, user : discord.Member =None):
            try:
                if not user:
                        user=ctx.author
                await ctx.send("Just slapped :wave: "+user.mention)
                response = requests.get(user.avatar_url)
                image_bytes = io.BytesIO(response.content)
                person = Image.open(image_bytes)
                slap = Image.open(".\cogs\slapping\slap.jpg")
                person_res=person.resize((100,100))
                area=(100,100,200,200)
                slap.paste(person_res, area)
                slap.save(".\\cogs\\slapping\\"+str(user.id)+".jpg")
                with open(".\\cogs\\slapping\\"+str(user.id)+".jpg", 'rb') as f:
                    picture = discord.File(f)
                    await ctx.send(file=picture)
                os.remove(".\\cogs\\slapping\\"+str(user.id)+".jpg")
            except Exception as e:
                print(e)
    

    Результат, который он генерирует:

    output

    Вам понадобится папка для шлепков в папке cogs, в которой вы можете хранить изображение с именем slap.jpg. Просто измените каталог в коде, если хотите внести какие-то изменения.

    Здесь задается аналогичный вопрос, связанный с командой slap для бота Discord: Почему это изображение, созданное с помощью PIL, странно искажено?

    27.04.2021

    3

    Попробуйте использовать .convert (RGB) после открытия изображений, например im = Image.open (name) .convert (RGB), или если в изображениях есть некоторая прозрачность, которая может объяснить странные вещи, используйте alpha_composite () вместо paste (). Попробуйте, потому что без изображений я не могу этого понять.

    20.01.2021
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..