AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Bitmap aus Clipboard laden

Ein Thema von Amateurprofi · begonnen am 8. Apr 2025 · letzter Beitrag vom 9. Apr 2025
Antwort Antwort
Seite 2 von 2     12
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.097 Beiträge
 
Delphi XE2 Professional
 
#11

AW: Bitmap aus Clipboard laden

  Alt 8. Apr 2025, 21:27
Ich benutze aktuellen den Befehl Image1.Picture.Bitmap.Assign(Clipboard) . Was passiert in diesem Fall bei dem Bild?
Danke Redeemer.
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.
Miniaturansicht angehängter Grafiken
bild_5.jpg  
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.097 Beiträge
 
Delphi XE2 Professional
 
#12

AW: Bitmap aus Clipboard laden

  Alt 8. Apr 2025, 21:44
Das ist jetzt keine Antwort auf deine Frage, aber warum öffnest Du mit Paint?
Aus unterschiedlichen Gründen.
Zum Bespiel, um bestimmte Bereiche eines Bildes zu entfernen.
Das geht aber auch in Delphi auch. Nur halt eventuell nicht mit Canvas, sondern der Gr32 oder was in der Art.
Das geht auch mit Canvas, aber warum erst eine Prozedur schreiben, wenn Paint das Zuschneiden von Bildern perfekt macht?
Ich könnte auch alles mit Buntstiften abmalen. Will ich aber nicht.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.097 Beiträge
 
Delphi XE2 Professional
 
#13

AW: Bitmap aus Clipboard laden

  Alt 8. Apr 2025, 21:57
Mit InsideClipboard kannst du die Formate sehen und den Inhalt direkt als Binärdatei speichern:
https://www.nirsoft.net/utils/inside_clipboard.html
Danke jaenicke.
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?
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.948 Beiträge
 
Delphi 12 Athens
 
#14

AW: Bitmap aus Clipboard laden

  Alt 8. Apr 2025, 22:37
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.

Aber das Programm will unbedingt meinen PC reparieren und ist von dieser Idee nicht abzubringen.
Solch eine Funktion hat das Tool gar nicht. Was meinst du damit? Hast du vielleicht auf einen Werbebanner auf der Seite geklickt statt auf den Download?

Gibt es keine Möglichkeit, mit Delphi an die Binärdaten heranzukommen?
Doch, aber dann hast du auch wirklich nur die reinen Bildinformationen:
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;
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.097 Beiträge
 
Delphi XE2 Professional
 
#15

AW: Bitmap aus Clipboard laden

  Alt 8. Apr 2025, 23:27
@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.
Miniaturansicht angehängter Grafiken
bild_4.jpg  
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
711 Beiträge
 
Delphi 10.3 Rio
 
#16

AW: Bitmap aus Clipboard laden

  Alt 9. Apr 2025, 13:16
Das geht aber auch in Delphi auch. Nur halt eventuell nicht mit Canvas, sondern der Gr32 oder was in der Art.
Das geht auch mit Canvas, aber warum erst eine Prozedur schreiben, wenn Paint das Zuschneiden von Bildern perfekt macht?
Ich könnte auch alles mit Buntstiften abmalen. Will ich aber nicht.
Weil es einfacher ist eine Bmp-Datei mit einem externen Programm zu öffnen, darin mit dem externen Programm rumzumalen, es in die Zwischenablage zu kopieren und von dort dann endlich in Delphi zu öffnen?
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).
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.097 Beiträge
 
Delphi XE2 Professional
 
#17

AW: Bitmap aus Clipboard laden

  Alt 9. Apr 2025, 23:01
Das geht aber auch in Delphi auch. Nur halt eventuell nicht mit Canvas, sondern der Gr32 oder was in der Art.
Das geht auch mit Canvas, aber warum erst eine Prozedur schreiben, wenn Paint das Zuschneiden von Bildern perfekt macht?
Ich könnte auch alles mit Buntstiften abmalen. Will ich aber nicht.
Weil es einfacher ist eine Bmp-Datei mit einem externen Programm zu öffnen, darin mit dem externen Programm rumzumalen, es in die Zwischenablage zu kopieren und von dort dann endlich in Delphi zu öffnen?
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).
Zu "Weil es einfacher ist ..."
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.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:27 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