@Dima_E

Как передать изображение через сокет?

Сейчас я самом начале и не могу нормально перевести скриншот в байты и обратно.
Можно сохранить и открыть как "rb", но при попытке декодирования "im.decode('utf-8')" вылезает сразу ошибка.
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

Аналогичная проблема:
https://coderoad.ru/41076024/%D0%9E%D1%82%D0%BF%D1...
Взяв оттуда пример перевода изображения в байты и обратно, тоже получил ошибку:
image = ImageGrab.grab()
img_bytes = image.tobytes()
img_bytes.decode()

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 51933: invalid start byte

Помогите хотя бы скрин перевести в байты и обратно без ошибок.
  • Вопрос задан
  • 552 просмотра
Пригласить эксперта
Ответы на вопрос 2
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Насколько я помню decode() переводит последовательность в utf-8 строку!
Вам же нужно, как я понял, кодировать и декодировать в base64 например!
Ответ написан
@NaRaslabone
from io import BytesIO

sock = socket.socket()
sock.connect(("ip", "port"))
img = ImageGrab.grab()
img_bytes = BytesIO()
img.save(img_bytes, format='PNG')
sock.send(img_bytes.getvalue())
sock.close()


ИЛИ

Посмотри как я реализовал это в своем "софте":
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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