Seite 1 von 1

img.l = GetClipboardData(#PB_ClipboardImage)

Verfasst: 03.05.2006 21:44
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)...

Verfasst: 03.05.2006 22:29
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

Verfasst: 03.05.2006 22:37
von Delle
Yep das funzt super!

Aber was kann man dann überhaupt mit dem Befehl

GetClipboardData(#PB_ClipboardImage)

(ohne die API) anfangen?

Verfasst: 03.05.2006 23:27
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

Verfasst: 04.05.2006 07:56
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

Verfasst: 04.05.2006 08:56
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)