Ich versuche, ein kopiertes Bild aus der Zwischenablage zu speichern, aber es verliert seinen Alphakanal:
%Vor%Wenn ich ein 32-Bit-Bild aus PhotoShop oder IE / Firefox / Chrome kopiere und den obigen Code ausführe, verliert die Ausgabe ihren Alpha-Kanal, stattdessen wird sie vor einem schwarzen Hintergrund gespeichert.
Das Bild wird als PNG gespeichert, das einen Alpha-Kanal enthalten kann.
Die korrekten Daten befinden sich anscheinend in der Zwischenablage, da beim Einfügen in andere Anwendungen (z. B. PhotoShop) der Alphakanal beibehalten wird.
Kann mich jemand aus meinem Elend befreien?
Vielen Dank im Voraus!
Aktualisierung:
%Vor%Das obige deutet darauf hin, dass die Alpha-Daten verloren gehen, sobald sie aus der Zwischenablage genommen werden. Vielleicht muss ich es auf andere Weise aus dem Klemmbrett holen?
Rufen Sie Clipboard.GetImage()
Clipboard.GetDataObject()
aufzurufen
Dies gibt ein IDataObject zurück, das Sie wiederum durch Aufrufen von dataObject.GetFormats()
abfragen können. GetFormats()
gibt die vom Zwischenablageobjekt unterstützten Typformate zurück - möglicherweise wird ein genaueres Format unterstützt, das Sie zum Extrahieren der Daten verwenden können.
Es könnte sein, dass dieser Artikel vorschlägt, dass das Clipboard-Objekt, das in Win32 arbeitet, ist nur in der Lage, Bitmaps zu verwalten, die nicht den transparenten / teilweise transparenten Alphakanal aufweisen. Die OLE-Zwischenablage ist besser geeignet, so scheint es:
Der netez war jedoch der beste Artikel, den ich zu diesem Thema gefunden habe. (Vorsicht, ich habe das selbst nicht getestet)