Wie füge ich mit Python Bilddaten zur Betriebssystem-Zwischenablage hinzu bzw. rufe sie ab?Python

Python-Programme
Anonymous
 Wie füge ich mit Python Bilddaten zur Betriebssystem-Zwischenablage hinzu bzw. rufe sie ab?

Post by Anonymous »

Ich habe Python-Code, der Bilddateien bearbeitet, und würde gerne wissen, wie

Bilddaten zur Zwischenablage des Betriebssystems hinzugefügt und von dort abgerufen werden können.

Bei der Suche nach einer plattformübergreifenden Lösung zum Ersetzen oder Abrufen von Zwischenablagetext in Python

gab es viele einfache Antworten dafür (z. B. die Verwendung des integrierten Tkinter-Moduls mit etwas Code).

Diese Methoden könnten jedoch nur einfachen Text verwenden, keine anderen Zwischenablagedaten wie Bilder.

Meine Version von Python ist 3.x unter Windows, aber die Antwort muss plattformübergreifend sein

(funktioniert auf verschiedenen Betriebssystemen) und sollte auch andere Python-Versionen wie 2.x unterstützen.

Ich denke, es sollte nur integrierte Python-Module verwenden und der Code sollte nicht zu komplex sein (oder eine Erklärung für seine Funktion enthalten). Es kann sich um ein Python-Modul handeln, da die Dateien im selben Ordner wie tragbarer Programmcode enthalten sein können, um eine Installation zu vermeiden.

Es gibt einige andere verwandte Fragen zu dieser Frage, die wahrscheinlich für Bilder funktionieren, aber nur ein einzelnes Betriebssystem unterstützen. Die besten waren „Bild in die Zwischenablage kopieren in Python3“ und „Bild in die Windows-Zwischenablage schreiben in Python mit PIL und win32clipboard?“.

Die dort beschriebenen Methoden (nur für Windows) scheinen die folgenden Schritte zu verwenden:
  • Rohbinärdaten des Bildes abrufen – die Methode lädt eine Bilddatei mit dem Python Imaging

    Bibliotheksmodul (PIL/Pillow), da dieses über andere verfügt Verarbeitungsfunktionen, die später verwendet werden, in einer einfachen

    und beliebten Standard-API. Dies könnte stattdessen mit einem anderen Modul erfolgen (z. B. Pygame).
  • Erstellen Sie eine Dateiobjektvariable (für In-Memory-Input-/Output-Streaming) mit dem integrierten io

    Modul. Für Python 2.x wird aus cStringIO import StringIO verwendet, aber mit Python 3 wird der

    bessere binäre Stream-Objekttyp io.BytesIO verwendet – die älteren erlauben jetzt nur Text.
  • Speichern Sie die Bilddaten im BMP-Dateiformat (Windows Bitmap/Device Independent Bitmap)

    in der Dateiobjektvariablen aus dem vorherigen Schritt. Die Methode, die PIL/Pillow verwendet, konvertiert zunächst

    diese Daten mit .convert("RGB") für die Variable, die sie enthält.
  • Erhalten Sie den vollständigen Inhalt des Variablenspeicherpuffers des Dateiobjekts als Binärdaten (

    Code: Select all

    bytes
    -Objekt),

    schneiden Sie es ab Position 14 in Scheiben, um den 14-Byte-Header des BMP/DIB-Dateiformats zu entfernen, und speichern Sie es dann

    als Variable. Die Methode besagt, dass das Slicing dieser Daten auf 32- oder 64-Bit-Systemen funktioniert, aber

    benötigt die Windows-Zwischenablage-API und funktioniert daher nicht für ein anderes Dateiformat.
  • Schließen Sie den Speicherpuffer und kopieren Sie die Bilddaten aus dem vorherigen Schritt in die Zwischenablage.

    Die Methode führt dies unter Windows mithilfe des win32clipboard-Teils eines Erweiterungsmoduls aus –

    sie öffnet die Zwischenablage zur Verwendung, löscht es, setzt seinen Wert auf die Bilddatenvariable aus

    dem vorherigen Schritt (unter Verwendung des BMP/DIB-Typs) und schließt dann die geöffnete Zwischenablage.
Außerdem gibt es ein einfaches plattformübergreifendes Textmodul für die Zwischenablage namens Pyperclip, das

nur eine einzelne Datei für Version 1.5.6 ist und möglicherweise Code enthält, der verarbeitet werden kann Bilddaten.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post