Image-Frage
Übersicht

MuckBetreff: Image-Frage |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Wenn ich ein Bild lade mit LoadImage und dann zur selben Variable ein anderes Bild lade, wird dann das aktuelle überschrieben oder existieren beide Bilder im Speicher? Also besser gefragt: Sollte ich vorher FreeImage eingeben oder nicht? |
||
Latte! Fußballmanagement pur |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja, solltest FreeImage machen ausser du willst den speicher mit nichtmehr auffindbaren bildern vollstopfen ![]() |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
FlorianBetreff: Re: Image-Frage |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Muck hat Folgendes geschrieben: Hi!
Wenn ich ein Bild lade mit LoadImage und dann zur selben Variable ein anderes Bild lade, wird dann das aktuelle überschrieben oder existieren beide Bilder im Speicher? Also besser gefragt: Sollte ich vorher FreeImage eingeben oder nicht? Es existieren beide Bilder im Speicher. Die Variabel enthält nur ein Zeiger der auf den Speicherbereich zeigt, wo sich das Bild befindet. |
||
Das große BlitzBasic Community Tutorial
Stackmaschine 2.0 |
Muck |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich bekomm jetzt an einer Stelle immer einen 'invalid image handle' angezeigt, mit FreeImage... Heißt das, dass Bild nicht mehr existiert oder könnte das noch einen anderen Grund haben? | ||
Latte! Fußballmanagement pur |
HW |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also es müsste ja eigentlich existieren, wenn du es geladen hast. Ohne Code können wir dir in diesem Fall jedenfalls nicht helfen. | ||
Muck |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also, ich hab den Fehler jetzt mal in einem Mini-Programm nachgebaut. Vielleicht könnt ihr mir jetzt sagen, warum das nicht geht.
Code: [AUSKLAPPEN] Graphics 640,480,16,2
SetBuffer BackBuffer() Global bild = LoadImage ("grafiken\test.png") Global bild_temp Repeat If KeyHit(2) Then Bild_Test() EndIf Until KeyHit(1) End Function Bild_Test() bild_temp = bild ; Bild zwischenspeichern FreeImage bild ; Bild löschen bild = bild_temp ; zwischengespeichertes Bild zuweisen FreeImage bild_temp ; zwischengespeichertes Bild löschen (hier bekomm ich 'invalid image handle') End Function |
||
Latte! Fußballmanagement pur |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Erstmal: Bei Testprogrammen sich nur auf das wesentliche konzentrieren! Also keine Funktionen etc...
Hier mal etwas, was deinen Ansprüchen wohl genügen sollte (mit 'Space' Bild zeichnen): Code: [AUSKLAPPEN] Graphics 640,480,16,2
SetBuffer FrontBuffer() Global bild = LoadImage ("data\tx3.bmp") Global bild_temp While Not KeyHit(1) If KeyHit(57) Then Print bild+" "+bild_temp bild_temp=CopyImage(bild) FreeImage bild bild=CopyImage(bild_temp) FreeImage bild_temp DrawImage bild,Rand(200,300),Rand(100,200) Print bild+" "+bild_temp EndIf Wend End |
||
Muck |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hui danke, der CopyImage-Befehl war mir gänzlich unbekannt! Und ich würg mir hier einen ab. ![]() Aber ich hab noch ein paar Fragen bezüglich ResizeImage. Code: [AUSKLAPPEN] Repeat
ResizeImage test, 300,300 Until KeyHit(1) Warum wird hier die Auslagerungsdatei immer größer? Wird mit jedem 'resizen' ein extra Bild im Speicher angelegt oder was? Und wie kann man ein verändertes Bild dann wieder löschen? |
||
Latte! Fußballmanagement pur |
Muck |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Huhu ![]() ![]() |
||
Latte! Fußballmanagement pur |
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Warum möchtest du eigentlich das Bild innerhalb einer Schleife vergrößern ?
Mach es lieber vorher ! In deiner Schleife bleibt das Bild sowieso immer gleich groß, also macht es um so weniger Sinn es in der Schleife zu machen. Das dürfte dann auch das überflüssige füllen des Speichers beenden. cheers |
||
Muck |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja, schon klar, ich hab das natürlich nicht genauso verwendet. Es scheint so zu sein, dass LoadImage und ResizeImage immer zu einer Vergrößerung der Auslagerungsdatei führen und man mit FreeImage nur den Grafikspeicher entlastet. Also sollte man die beiden Befehle wohl nicht zu oft einsetzen. ![]() |
||
Latte! Fußballmanagement pur |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group