Anfängerfragen zum Programmieren mit PureBasic.
Delle
Beiträge: 1130 Registriert: 10.05.2005 22:48
Beitrag
von Delle » 03.05.2006 21:44
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)...
ABBKlaus
Beiträge: 61 Registriert: 15.03.2006 22:09
Wohnort: Ratingen
Kontaktdaten:
Beitrag
von ABBKlaus » 03.05.2006 22:29
leider nicht ganz ohne winapi
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
Delle
Beiträge: 1130 Registriert: 10.05.2005 22:48
Beitrag
von Delle » 03.05.2006 22:37
Yep das funzt super!
Aber was kann man dann überhaupt mit dem Befehl
GetClipboardData(#PB_ClipboardImage)
(ohne die API) anfangen?
ABBKlaus
Beiträge: 61 Registriert: 15.03.2006 22:09
Wohnort: Ratingen
Kontaktdaten:
Beitrag
von ABBKlaus » 03.05.2006 23:27
ist wohl in 3.94 nie so richtig final geworden.
in PB4B11 gehts schon besser
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
Karl
Beiträge: 520 Registriert: 21.07.2005 13:57
Wohnort: zu Hause
Beitrag
von Karl » 04.05.2006 07:56
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
ABBKlaus
Beiträge: 61 Registriert: 15.03.2006 22:09
Wohnort: Ratingen
Kontaktdaten:
Beitrag
von ABBKlaus » 04.05.2006 08:56
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