@daniilletov

Как сделать код?

Надо бот который не сохраняя фотографию на компьютер, но может изменить фотку
Вот я написал только с сохранением
# Размер изменяемого фото
size=(200,200)
# Cообщения с которыми мы работаем
@bot.message_handler(content_types=['photo', 'text'])
# Программа
def handle_message(message):
    # Ответы пользователю
    if message.text == "/start":
        sent = bot.send_message(message.from_user.id, "Привет, я бот для обработки фото. Пришли фото для его обработки")
        bot.register_next_step_handler(sent, handle_photo) # !!!ВАЖНО, ЭТО ПЕРЕХОД В ДРУГОЙ DEF!!!
    elif message.text == "/help":
        bot.send_message(message.from_user.id, "Нажми /start")

# Здесь идёт обработка фото
def handle_photo(message):
    photo=message.photo[-1]                                 # Сохранение фото на ваш компьютер  
    file_info = bot.get_file(photo.file_id)                 # Сохранение фото на ваш компьютер   
    downloaded_file = bot.download_file(file_info.file_path)# Сохранение фото на ваш компьютер    
    save_path = 'photo.png'                                 # Сохранение фото на ваш компьютер        
    with open(save_path, 'wb') as new_file:                 # Сохранение фото на ваш компьютер     
        new_file.write(downloaded_file)                     # Сохранение фото на ваш компьютер    
    bot.reply_to(message, 'Фотография сохранена.')          # Сохранение фото на ваш компьютер   
    #_______________________________________________________________________________________                        !!!ВСЕ ФОТО СОХРАНЯЮТСЯ В ПАПКУ С ПРОГРАММОЙ!!!
    im = Image.open("photo.png")                            # Изменение размера фото и отправка пользователю
    out = im.resize(size)                                   # Изменение размера фото и отправка пользователю    
    out.save('photoresize.png')                             # Изменение размера фото и отправка пользователю
    with open('photoresize.png', 'rb') as f:                # Изменение размера фото и отправка пользователю
        bot.send_photo(message.from_user.id, f)             # Изменение размера фото и отправка пользователю
    
# Старт программы
bot.polling()
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 2
@aleks-th
Вместо файла используй BytesIO .

https://pythonim.ru/moduli/io-python
Ответ написан
Комментировать
@rPman
у тебя bot.download_file возвращает bytes в памяти, их не надо сохранять, а сразу передавай в Image.open но укажи в качестве файла синтетический stream с помощью BytesIO

То же самое и для bot.send_photo, он хочет stream, так дай ему новый io.BytesIO() после изменения изображения, сохраняй его в него, закрывай и снова открывай чтобы передать в бот
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы