![]() |
AW: Bitmap aus Clipboard laden
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Hab ich probiert. Auch hier sind die Farben auf gleiche Weise verfälscht. Hab noch einmal die Bilder in vergrößerter Form hochgeladen (Bild_5). Links das Original, rechts das verfälschte Bild. |
AW: Bitmap aus Clipboard laden
Zitat:
Ich könnte auch alles mit Buntstiften abmalen. Will ich aber nicht. |
AW: Bitmap aus Clipboard laden
Zitat:
Hab ich runtergeladen. Aber das Programm will unbedingt meinen PC reparieren und ist von dieser Idee nicht abzubringen. Deshalb wieder gelöscht. Gibt es keine Möglichkeit, mit Delphi an die Binärdaten heranzukommen? |
AW: Bitmap aus Clipboard laden
Ich vermute einmal, dass das Problem die Konvertierung als Bitmap ist, denn Paint legt in die Zwischenablage unter anderem CF_DIB und PNG ab, aber nicht CF_Bitmap. Wenn du also CF_Bitmap abrufst, muss Windows den Inhalt der Zwischenablage zuerst konvertieren.
Zitat:
![]() Zitat:
Delphi-Quellcode:
function GetClipboardDIBData(const ATarget: TMemoryStream): Boolean;
var ClipboardHandle: THandle; Src: Pointer; Size: Integer; begin if Clipboard.HasFormat(CF_DIB) then begin OpenClipboard(0); try ClipboardHandle := GetClipboardData(CF_DIB); if ClipboardHandle <> 0 then begin Src := GlobalLock(ClipboardHandle); try Size := GlobalSize(ClipboardHandle); if Size > 0 then begin ATarget.WriteBuffer(Src^, Size); ATarget.Position := 0; Result := True; end else Result := False; finally GlobalUnlock(ClipboardHandle); end; end else Result := False; finally CloseClipboard; end; end else Result := False; end; procedure TForm290.FormCreate(Sender: TObject); var Data: TMemoryStream; begin Data := TMemoryStream.Create; try if GetClipboardDIBData(Data) then Data.SaveToFile('c:\temp\clipboarddata.bin'); finally Data.Free; end; end; |
AW: Bitmap aus Clipboard laden
Liste der Anhänge anzeigen (Anzahl: 1)
@jaenicke
Vielen Dank, Sebastian. Zu "Solch eine Funktion hat das Tool gar nicht. ...": Ich bin eigentlich recht vorsichtig mit dem Klicken, möchte das aber nicht ausschließen. Werde es also noch einmal versuchen. Zu "Paint legt in die Zwischenablage unter anderem CF_DIB und PNG ab, aber nicht CF_Bitmap." Doch, auch CF_Bitmap ist enthalten (Siehe Bild_4). Ups, gerade sehe ich das CF_Bitmap zwar vorhanden ist, aber mit Size=0. Zu "... aber dann hast du auch wirklich nur die reinen Bildinformationen": Ja, genau das möchte ich ja auch. Ich möchte einfach wissen, welche Daten da wirklich stehen. Vielleicht finde ich ja heraus, was der Grund für die verfälschten Farben ist. Vielen Dank auch für die Programm-Codes. Werde ich mir im Laufe der Woche anschauen. |
AW: Bitmap aus Clipboard laden
Zitat:
Das sind keine Buntstifte, das sind Tanklaster voller Farbe. Abgesehen davon dass Du nicht steuern kannst wie Paint das Bild in die Zwischenablage schreibt, können auch alle Programm die eine Zwischenablage implementiert haben sich das Bild "heimlich" ziehen. Inclusive offene Remote Sessions (soweit nicht deaktiviert). |
AW: Bitmap aus Clipboard laden
Zitat:
Ja Zu "dass Du nicht steuern kannst wie Paint das Bild in die Zwischenablage schreibt" Ich bin dabei das herauszufinden. Zu "können auch alle Programm" Hab ich nichts dagegen. |
AW: Bitmap aus Clipboard laden
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe jetzt geprüft welche Daten unter CF_DIB im Clipboard stehen, nachdem eine .bmp-Datei mit dem Pixelformat pf8bit mit Paint geöffnet wurde und mit Ctrl-A und Ctrl-C ins Clipboard kopiert wurde.
In Kürze (Komplette Auswertung im Anhang) Im Clipboard stehen unter CF_DIB folgende Daten: 1) Der komplette BitmapInfoHeader (40 Bytes). Die Daten sind korrekt. 2) Die Palette mit 256 Einträgen. (1024 Bytes). Warum eine Palette mit 256 Einträgen gespeichert wird, wenn nur 26 verschiedene Farben in der Bitmap enthalten sind, erschließt sich mir nicht. Von den 26 Farben der Bitmap sind nur 4 in der Palette enthalten- 3) Die Farbinformationen (Indizes in die Palette) (256 Bytes). 4) Daten, deren Bedeutung (mir) unklar sind. (2776 Bytes). Wenn ich die Datei mit Photoshop üffne und ins Clipboard kopiere sieht das anders aus, Dann sind unter CF_DIB gespeichert: 1) Der komplette BitmapInfoHeader (40 Bytes). Anders als bei Paint sind biClrUsed und biClrImportant = 239 (statt 0 bei Paint). 2) Die Palette mit 239 Einträgen. (956 Bytes). Warum die Palette gerade 239 Einträge hat, ist mir nicht klar, denn 26 Einträge wären ausreichend. 3) Die Farbinformationen (Indizes in die Palette) (256 Bytes). Wenn ich dann z.B. in Paint ein Paste mache, wird das Bild korrekt angezeigt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz