Как добавить/получить данные изображения в буфер обмена ОС с помощью Python?Python

Программы на Python
Ответить
Anonymous
 Как добавить/получить данные изображения в буфер обмена ОС с помощью Python?

Сообщение Anonymous »

У меня есть код Python, который редактирует файлы изображений, и я хотел бы знать, как

добавлять данные изображения в буфер обмена операционной системы и получать их оттуда.

При поиске кроссплатформенного решения для замены или получения текста буфера обмена в 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") в содержащую их переменную.
  • Получите полное содержимое буфера памяти переменных объекта файла в виде двоичных данных (),

    разрежьте его с позиции 14, чтобы удалить 14-байтовый заголовок формата файла BMP/DIB, а затем сохраните его

    как переменную. В методе говорится, что нарезка этих данных работает в 32- или 64-битных системах, но

    требуется API буфера обмена Windows, поэтому он не работает для другого формата файла.
  • Закройте буфер памяти и скопируйте данные изображения из предыдущего шага в буфер обмена.

    Метод делает это в Windows, используя часть модуля расширения win32clipboard -

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

    предыдущего шага (с использованием типа BMP/DIB), затем закрывает открытый буфер обмена.
Кроме того, существует простой кроссплатформенный текстовый модуль буфера обмена под названием Pyperclip, который

только один файл для версии 1.5.6 и, возможно, есть код, который может обрабатывать данные изображения.

Подробнее здесь: https://stackoverflow.com/questions/244 ... ing-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»