 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 05.07.2007, 17:30 Titel: |
|
|
Noch eine kleine Hilfe:
Code: |
Dib = FreeImage_ConvertTo32Bits(Dib)
SprWidth = FreeImage_GetWidth(Dib)
SprHeight = FreeImage_GetHeight(Dib)
Sprite = ImageCreate(SprWidth, SprHeight)
Bits = FreeImage_GetBits(Dib)
MemCpy CPtr(Zstring Ptr, Sprite) + 4, Bits, SprWidth * SprHeight * 4
|
Erstellt aus dem FreeImage Bildpuffer "Dib" einen FB-Bildpuffer. _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 05.07.2007, 17:57 Titel: |
|
|
Bingo!
Da hätte jeder drauf kommen können
Code: |
w=640
h=480
screenres w,h
' Den Bildschirm mit irgendwas füllen
FOR X=1 to w
For Y= 1 to h
Farbe=INT(RND * 255)+1
Pset(X,Y),Farbe
NEXT
NEXT
' Den Bildschirm auslesen (Thx an Beispiel..)
Dim ScreenShot As Any Ptr
ScreenShot = ImageCreate(w, h)
Get (0, 0)-(w-1, h-1), ScreenShot ' hätt ich beinahe Falschgemacht xD..
Bsave "TmpBitmap.bmp",ScreenShot ' Temopäre Bitmap für Freeimage
' Und FreeImgage kommt jetzt ins Spiel:
#include "freeimage.bi"
ScreenShotX = FreeImage_Save(FIF_JPEG,FreeImage_Load(FIF_BMP,"TmpBitmap.bmp" ),HEX$(TIMER)+".jpg") ' HEX$(TIMER) ist der Dateiname.
'Und Fertig ;) |
 |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 05.07.2007, 21:17 Titel: |
|
|
Dauer ein Bissel bis das Bild generiert ist...
Aber sonst eigl. nicht..
Zuletzt bearbeitet von AndT am 05.07.2007, 21:50, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 05.07.2007, 21:22 Titel: |
|
|
...
Zuletzt bearbeitet von AndT am 05.07.2007, 21:50, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 05.07.2007, 21:29 Titel: |
|
|
Ich hab den Code in eine Sub zusammengefasst:
Code: | SUB MakeScreenshot (Dateiname as String , w as integer , h as integer)
#include "freeimage.bi"
Dim ScreenShot As Any Ptr
ScreenShot = ImageCreate(w, h)
Get (0, 0)-(w-1, h-1), ScreenShot
Bsave "TmpBitmap.bmp",ScreenShot
ScreenShotX = FreeImage_Save(FIF_JPEG,FreeImage_Load(FIF_BMP,"TmpBitmap.bmp" ),Dateiname + ".jpg") ' HEX$(TIMER) ist der Dateiname.
kill "tmpbitmap.bmp"
ImageDestroy ScreenShot
End Sub
|
Beispiel:
Code: | ' Beispielprogramm
screen 18
print "dat isn Testscreenshot.."
mkdir "screenshots"
chdir "screenshots"
MakeScreenshot ("test.jpg",640,480)
chdir ".."
|
///
Code überarbeitet für 0.18 :
Code: | #include once "freeimage.bi"
public SUB MakeScreenshot (Dateiname as String , w as integer , h as integer)
Dim ScreenShot As Any Ptr
Dim ScreenShotX as integer
ScreenShot = ImageCreate(w, h)
Get (0, 0)-(w-1, h-1), ScreenShot
Bsave "TmpBitmap.bmp",ScreenShot
ScreenShotX = FreeImage_Save(FIF_JPEG,FreeImage_Load(FIF_BMP,"TmpBitmap.bmp" ),Dateiname + ".jpg") ' HEX$(TIMER) ist der Dateiname.
kill "tmpbitmap.bmp"
IMAGEDESTROY ScreenShot
End Sub
' Beispielprogramm
screen 18
print "dat isn Testscreenshot.."
mkdir "screenshots"
chdir "screenshots"
MakeScreenshot ("test.jpg",640,480)
chdir ".." |
Zuletzt bearbeitet von AndT am 06.07.2007, 09:48, insgesamt 5-mal bearbeitet |
|
Nach oben |
|
 |
masterherpo
Anmeldungsdatum: 22.01.2006 Beiträge: 102
|
Verfasst am: 05.07.2007, 22:16 Titel: |
|
|
Vielen Dank. Das ist ein schöner Code, das ist genau was ich brauche
Aber wieso warst du so motiviert dieses Problem zu lösen? Das kann ich nicht ganz nachvollziehen  |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 05.07.2007, 22:18 Titel: |
|
|
Ich bin gerade dabei mein Prog einwenig aufzuarbeiten
Es Brucht eine Speicher und Lade funktion und warum nicht den Export der Bilder in den verschiedensten Formaten
Siehe dazu:
http://forum.qbasic.at/viewtopic.php?t=4394
Der 0.18 Code ist nochmals verbessert aber ich bezweifele, das er in 0.15 funzt.
Mal ne kleine Beschreibung, wie ich Darauf gekommen bin..
Zuerst habe ich versucht den Buffer als Rohdatei (RAW) auszulesen..
Das klappte aber nicht, schon alleine weil ich nicht Wusste, das Get ein eigenes Kompressionsformat benutzt. Erst Bsave Speichert es in ein von FreeImage lesbares Bitmap Format (BMP). Diese erstellte Datei wird wieder mit Freeimage eingelesen, um eine höchst mögliche Kompatibelität zu erzielen. (Vermeidung eines Absturzes)
Erst dann kann mit FreeImage in ein belibiges Format gespeichert werden.
Wer weitere Infos über FreeImage braucht, kann sich ja mal das Beispiel Code: | \examples\gfx\freeimage.bas | angucken  |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|