img.l = GetClipboardData(#PB_ClipboardImage)

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

img.l = GetClipboardData(#PB_ClipboardImage)

Beitrag von Delle »

Hey,

ich möchte das aktuelle Bild aus der Zwischenablage einlesen, einen
Text darauf anbringen und es "richtig" auf Festplatte als .jpg speichern.

img.l = GetClipboardData(#PB_ClipboardImage)

Und wie geht es jetzt konkret weiter? Etwa so?

Code: Alles auswählen

If StartDrawing(ImageOutput())
DrawingMode(1)
Locate(6,6)
DrawText("Test...")
StopDrawing()
EndIf

SaveImage(UseImage(),"test.jpg",#PB_ImagePlugin_JPEG,8)
Das img.l kann ich ja nirgends als ImageID oder so angeben oder? Glaub ich verdreh grad im Moment alles (Pepsi-Allergie)...
Benutzeravatar
ABBKlaus
Beiträge: 61
Registriert: 15.03.2006 22:09
Wohnort: Ratingen
Kontaktdaten:

Beitrag von ABBKlaus »

leider nicht ganz ohne winapi :cry:

Code: Alles auswählen

UseJPEGImageEncoder()
img.l = GetClipboardData(#PB_ClipboardImage)
If img
  GetObject_(img,SizeOf(BITMAP),bmp.BITMAP)
  Debug bmp\bmtype ; 0
  Debug bmp\bmwidth ; 1920
  Debug bmp\bmheight ; 1200
  Debug bmp\bmwidthbytes ; 7680
  Debug bmp\bmplanes ; 1
  Debug bmp\bmbitspixel ; 32
  Debug bmp\bmbits ; 0
  snap.l = CreateImage(#PB_Any,bmp\bmwidth,bmp\bmheight)
  If snap
    If StartDrawing(ImageOutput())
      DrawingMode(1)
      DrawImage(img,0,0)
      Locate(6,6)
      DrawText("Test...")
      StopDrawing()
    EndIf
    SaveImage(snap,"D:\Backup\test.jpg",#PB_ImagePlugin_JPEG,8)
  EndIf
Else
  Debug "Kein Image im Clipboard vorhanden"
EndIf
PureBasicPower TailBite Printer_Lib / PDFBarcode / PrintBarcode / ExcelWriter
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Beitrag von Delle »

Yep das funzt super!

Aber was kann man dann überhaupt mit dem Befehl

GetClipboardData(#PB_ClipboardImage)

(ohne die API) anfangen?
Benutzeravatar
ABBKlaus
Beiträge: 61
Registriert: 15.03.2006 22:09
Wohnort: Ratingen
Kontaktdaten:

Beitrag von ABBKlaus »

ist wohl in 3.94 nie so richtig final geworden.
in PB4B11 gehts schon besser :allright:
Syntax

Ergebnis = GetClipboardImage(#Image [, Tiefe])
Beschreibung

Erstellt ein neues Bild '#Image' aus den gerade im Clipboard befindlichen Bild-Daten (sofern es dort welche gibt).

Wenn #PB_Any als '#Image' Parameter verwendet wird, dann wird die neue Image Nummer als 'Ergebnis' zurückgegeben. Bei einem Fehler wird 0 zurückgegeben.

Wenn 'Tiefe' weggelassen oder auf #PB_Image_DisplayFormat gesetzt wird, wird das Bildformat von den Desktop-Einstellungen übernommen. Gültige Werte für 'Tiefe' können sein: 1, 2, 4, 8, 16, 24 und 32 Bit. Wenn Sie Echtfarben-Formate (englisch "true color") bearbeiten und die Änderungen ohne Verlust an Farbinformationen zurückspeichern möchten, ist es ratsam, die 24 oder 32 Bit Werte zu verwenden. Wenn die Bilder nur zum Anzeigen auf dem Bildschirm verwendet werden, bietet #PB_Image_DisplayFormat eine schnellere Performance.

Das Bild kann mittels FreeImage() freigegeben werden. Zur weiteren Verwendung des Bilds dienen z.B. Befehle wie DrawImage() oder ImageGadget().
Unterstützte OS

Windows, AmigaOS
PureBasicPower TailBite Printer_Lib / PDFBarcode / PrintBarcode / ExcelWriter
Benutzeravatar
Karl
Beiträge: 520
Registriert: 21.07.2005 13:57
Wohnort: zu Hause

Beitrag von Karl »

Geht auch ohne API:

Code: Alles auswählen

    lImage =CreateImage(0, width, height)
    ImageID = GetClipboardData(#PB_ClipboardImage)
    If StartDrawing(ImageOutput())
      DrawImage(ImageID, 0, 0, width, height)
      ;Locate(10, 10)
      ;DrawText(zeit) hier kannst du den Text (z. B. Uhrzeit) einschreiben
      StopDrawing()
      If SaveImage(0, sPfad + sname + ".jpg", #PB_ImagePlugin_JPEG, 9) = 0
        DeleteFile(sPfad + sname + ".jpg")
        SaveImage(0, sPfad + sname + ".jpg", #PB_ImagePlugin_JPEG, 9)
      EndIf
    EndIf
Die Weite und Höhe musst du dann vorher festlegen. Wenn du Bildschirmschüsse machst, ist das ja kein Problem.


Gruß Karl
The Kopyright Liberation Front also known as the justified ancients of Mumu!
PB 5.X
Benutzeravatar
ABBKlaus
Beiträge: 61
Registriert: 15.03.2006 22:09
Wohnort: Ratingen
Kontaktdaten:

Beitrag von ABBKlaus »

und noch die Desktopgrösse ermitteln :

Code: Alles auswählen

  If ExamineDesktops()
    width=DesktopWidth(0)
    height=DesktopHeight(0)
  EndIf
dann gehts auch in PB3.94 ohne API 8)
PureBasicPower TailBite Printer_Lib / PDFBarcode / PrintBarcode / ExcelWriter
Antworten