Fehler bei ResizeImage

Für allgemeine Fragen zur Programmierung mit PureBasic.
Sven
Beiträge: 374
Registriert: 23.09.2004 12:01

Fehler bei ResizeImage

Beitrag von Sven »

ResizeImage() von kleinen (etwa 32 x 32) auf sehr große Bildformate (etwa 1000 x 800) erzeugt unter PB 3.91 (jaPBe, Win98se) einen Absturz beim darauffolgenden Zugriff (UseImage...) auf das Bild, der Compiler meldet "#ImageObject not initilized", obwohl das Bild vorher problemlos angesprochen wurde. Warum ist das so? Das sollte doch nicht so sein, oder?

Das Erstellen eines Bildes mit CreateImage() in diesen Formaten ist kein Problem, ein Workaround ist daher: Bild vernichten und neu erzeugen, nur scheint mir dann ResizeImage() nicht sehr sinnreich. Auch sollte das Resize etwas schneller sein?

Sven
glubschi90
Beiträge: 274
Registriert: 04.09.2004 01:43
Wohnort: Würzburg

Beitrag von glubschi90 »

Komisch...
Wenn ich dich richtig verstanden habe, find' ich keinen Fehler...

(Hab mal 'nen Code geproggt)

Code: Alles auswählen

CreateImage(0,32,32)
StartDrawing(ImageOutput())
Circle(16,16,6,RGB(200,200,0))
StopDrawing()

ResizeImage(0,1000,800)
UseImage(0)

;FreeImage(0)
Ich hab aber WinXP - vielleicht liegt's daran... :roll:
PureBasic 4.30
Sven
Beiträge: 374
Registriert: 23.09.2004 12:01

Beitrag von Sven »

Grünau das meinte ich. Bei mir ist in Deinem Beispiel

ResizeImage(0,850,820)

gerade noch drin, dann Fehler.

Sven
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag von GPI »

Gibt Resize was zurück?

Eventuell eine einschränkung von Win98.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Sven
Beiträge: 374
Registriert: 23.09.2004 12:01

Beitrag von Sven »

Hi GPI!

Naja, wenn's läuft eine 5-stellige Zahl, wenn's nicht läuft 0. Nützt mir aber nichts, das abzufangen, weil ich ja das Bild weiterhin brauche.

Kann schon sein, dass es an der Speicherverwaltung von Win98 liegt. Man könnte das Bild vielleicht auch schrittweise vergrößern:

[code]CreateImage(0,32,32)
StartDrawing(ImageOutput())
Circle(16,16,6,RGB(200,200,0))
StopDrawing()

Debug ResizeImage(0, 200, 200)
UseImage(0)
Debug ResizeImage(0, 1000, 800)
UseImage(0)

FreeImage(0)[/code]

Das funktioniert, aber dann weiss ich nie, wann und unter welchen Bedingungen es wieder aussteigt.

Sven
Antworten