добавлять данные изображения в буфер обмена операционной системы и получать их оттуда.
При поиске кроссплатформенного решения для замены или получения текста буфера обмена в Python
было много простых ответов (например, использование встроенного модуля Tkinter с некоторым кодом).
Однако эти методы могут использовать только простой текст, а не другие данные буфера обмена, такие как изображения.
Моя версия Python — 3.x для Windows, но ответ должен быть кроссплатформенным
(работать в разных операционных системах), а также должен поддерживать другие версии Python, такие как 2.x.
Я думаю, что он должен использовать только встроенные модули Python, и код не должен быть слишком сложным (или иметь объяснение того, что он делает). Это может быть модуль Python, поскольку файлы можно включать в ту же папку, что и переносимый программный код, чтобы избежать установки.
Есть и другие вопросы, связанные с этим вопросом, которые, вероятно, работают для изображений, но они поддерживают только отдельную операционную систему. Лучшими были «Копировать изображение в буфер обмена в Python3» и «Записать изображение в буфер обмена Windows в Python с помощью PIL и win32clipboard?».
Описанные там методы (только для Windows), похоже, используют следующие шаги:
- Получить необработанные двоичные данные изображения — метод загружает файл изображения с модулем Python Imaging
Library (PIL/Pillow), поскольку у него есть другие функции обработки. используется позже, в простом
и популярном стандартном API. Вместо этого это можно сделать с помощью другого модуля (например, Pygame). - Создайте переменную объекта файла (для потоковой передачи ввода/вывода в памяти), используя встроенный модуль io
. Для Python 2.x из cStringIO используется импорт StringIO, но в Python 3 используется более совершенный тип объекта двоичного потока io.BytesIO — более старые версии теперь допускают только текст. - Сохраните данные изображения в формате файла BMP (Windows Bitmap/Device Independent Bitmap)
в переменную объекта файла из предыдущего шага. Метод, использующий PIL/Pillow, сначала преобразует
эти данные с помощью .convert("RGB") в содержащую их переменную. - Получите полное содержимое буфера памяти переменных объекта файла в виде двоичных данных (),
Код: Выделить всё
bytes
разрежьте его с позиции 14, чтобы удалить 14-байтовый заголовок формата файла BMP/DIB, а затем сохраните его
как переменную. В методе говорится, что нарезка этих данных работает в 32- или 64-битных системах, но
требуется API буфера обмена Windows, поэтому он не работает для другого формата файла. - Закройте буфер памяти и скопируйте данные изображения из предыдущего шага в буфер обмена.
Метод делает это в Windows, используя часть модуля расширения win32clipboard -
он открывает буфер обмена для использования, очищает его, присваивает значение переменной данных изображения из
предыдущего шага (с использованием типа BMP/DIB), затем закрывает открытый буфер обмена.
только один файл для версии 1.5.6 и, возможно, есть код, который может обрабатывать данные изображения.
Подробнее здесь: https://stackoverflow.com/questions/244 ... ing-python
Мобильная версия