Bildpositionen zwischenspeichern

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

mabox

Betreff: Bildpositionen zwischenspeichern

BeitragDo, Jan 01, 2009 21:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe eine Unbestimmte Anzahl Bilder. Jedes Dieser Bilder soll an verschiedenen Stellen eingezeichnet werden, das heißt es hat mehrere Positionen. Die Anzahl der Positionen ergibt sich erst während dem Programmablauf.
Wie kann ich die Positionen der Bilder zwischenspeichern, um die Bilder Später an diesen stellen einzuzeichnen?
Das ganze ist wichtig, damit die bilder nicht x mal geladen werden müssen.
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage

Holzchopf

Meisterpacker

BeitragDo, Jan 01, 2009 21:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Zieh dir alles zum Thema Types rein.
Erstelle ein Type mit Feldern für die Koordinaten. Für jedes Bild erstellst du dann ne neue Type-Instanz und trägst x- und y-Position ein. Um alle Bilder zu zeichnen machst du dann einfach ne For Each Schleife die dir für jeden Type das Bild an den entsprechenden Koordinaten einzeichnet.
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

mabox

BeitragDo, Jan 01, 2009 22:28
Antworten mit Zitat
Benutzer-Profile anzeigen
mit Types kenn ich mich einigermaßen aus.
Das was du beschrieben hast ist zwar schön und gut, jedoch müssten dazu alle Bilder für die es mehrere koordinaten gibt auch mehrmals geladen werden und genau das ist es was ich nicht will.
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage

Tankbuster

BeitragDo, Jan 01, 2009 22:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich verstehe nicht, warum du die Bilder, die öfters angezeigt werden sollen, auch öfters lädst.

Du kannst es doch einfach so machen
(grober Code)
Code: [AUSKLAPPEN]


Type Bild
Field x,y,num
End Type

For i=1 to 10
Bild(i)=LoadImage("Bild"+i+".png")
Next

B.Bild=New Bild
B\num=1
B\x=400
B\y=400

B.Bild=New Bild
B\num=2
B\x=123
B\y=123

B.Bild=New Bild
B\num=2
B\x=10
B\y=10

For B.Bild=Each Bild
DrawImage Bild(B\num),B\x,B\y
Next


Ist es das, was du suchst?
Du kannst ein Bild, dass du einmal lädst, sooft zeichnen, wie es dein Rechner erlaubt. Wink
Twitter
Download Jewel Snake!
Windows|Android

Holzchopf

Meisterpacker

BeitragDo, Jan 01, 2009 23:16
Antworten mit Zitat
Benutzer-Profile anzeigen
mabox hat Folgendes geschrieben:
jedoch müssten dazu alle Bilder für die es mehrere koordinaten gibt auch mehrmals geladen werden


Quatsch!
Code: [AUSKLAPPEN]
For Bild.TBild = Each TBild
    DrawImage GlobaleBildVariable, Bild\x, Bild\y
Next


Du kannst ein Bild natürlich so oft zeichnen wie du willst.
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

mabox

BeitragFr, Jan 02, 2009 0:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok ich hab mich schlecht ausgedrückt.
Ich weis, dass ich ein Bild, welches geladen wurde mehrmals einzeichnen kann. ABER ich will nicht alle verschiedenen Bilder gleichzeitig im Speicher haben, da es meistens über 3000 Stück sind. Deshalb will ich die Koordinaten speichern, an welchen das Bild hingezeichnet werden soll, dann das Bild laden, an diesen Stellen einzeichnen und das Bild wieder aus dem Speicher löschen. Dann soll das nächste Bild an den nächsten (zum Bild gehörigen) koordinaten eingezeichnet werden usw.
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage

Geeecko

BeitragFr, Jan 02, 2009 0:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Bilder in jedem Zeichenvorgang neu zuladen dauert zu lange.
Woher kommen 3000 Bilder? ôÔ

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Jan 02, 2009 0:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Hört sich sehr nach einer Tilemap an. Dazu mal LoadAnimImage anschauen und das Forum nach Tilemap durchsuchen. Die einfachse Form einer Tilemal hat 5 Zeilen Code. Sollte also kein Problem darstellen.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

mabox

BeitragFr, Jan 02, 2009 0:31
Antworten mit Zitat
Benutzer-Profile anzeigen
@Meisterdieb Das Programm soll nichts in Echtzeit anzeigen, sondern aus den Bildern eine Art Collage machen, siehe Worklogs -> "One Image (Workingtitle)"

@Hectic nein mit einer Tilemap ist das nicht lösbar, da alle Bilder einzeln sein müssen.
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Jan 02, 2009 0:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem ist, dass es im grunde nahezu egal ist ob nun 3000 Einzelbilder oder alle in ein ganz großes zusammen gepackt liegen. Denn der Speicherverbrauch wird der selbe sein. Mit den Einzelbildern kann man eventuell noch etwas raus holen, indem man einige doppelt anwenden kann. Jedoch wird jedes einzele auch etwas an Verwaltungsaufwand an Speicher benötigen.

Alles andere ist meiner Meinung nach mit Blitz nicht möglich, falls du so etwas wie - ich glaub das hiess - Silverlight meinst.
http://images.google.de/images...amp;tab=wi
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

mabox

BeitragFr, Jan 02, 2009 0:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Einzelbilder kann ich doch nacheinander in den Speicher laden und nach dem Einzeichnen wieder löschen. Wenn es ein großes Bild ist (was bei diesem Projekt nichteinmal möglich ist, da es jedes mal andere Bilder sind) wird viel mehr Speicher benötigt.

irgendwie kommt es mit so vor als würden wir aneinander vorbei reden...
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage

Xeres

Moderator

BeitragFr, Jan 02, 2009 1:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Zwei Types:
Code: [AUSKLAPPEN]
Type TBildPos
   Field X, Y
   Field IMGLink.TBild
End Type
      
Type TBild
   Field Bild
   Field Pfad$
End Type

Für jedes Bild legst du ein TBild an, wenn das Bild (vergleich der Pfade) nicht schon vorhanden ist. Jede Position kann in einem TBildPos gespeichert werden.
Zum Zeichnen den ersten TBild Eintrag wählen, das Bild laden, alle TBildPos durchgehen zeichnen, instanz löschen, Bild rauswerfen, nächste TBild Instanz...

Einsprüche?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Jan 02, 2009 1:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Worklog eben angesehen.

Lese alle Bilder aus den Verzeichnissen und erstelle daraus dann in ein großes Bild mehrere verkleinerte Tiles. Aus diesem Image kannst du dann über DrawImageRect seqenzweise die Einzelbilder auslesen und auf den Bildschirm sogar in Echtzeit einzeichnen. Dabei kann man dann auch scrollen. Ein risiges Image mit mehreren Tausend Pixeln Kantenlänge wird zwar ggf. von unterschiedlichen Grafikformaten unterstützt. Doch was nützt dir das, wenn du es mit keinem Grafikprogramm öffnen kannst, da du sicherlich keine Gigabyte an Grafikkartenspeicher hast.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

mabox

BeitragFr, Jan 02, 2009 11:25
Antworten mit Zitat
Benutzer-Profile anzeigen
@Xeres das ist genau das was ich brauche, zumindest nach deiner Beschreibung. Denn ich versteh noch nicht ganz was das "Field IMGLink.TBild" sein soll und wie man vom TBild alle TBildPos durchgehen kann. Also im Grunde genommen die Verknüpfung zwischen TBild und TBildPos.
Ich schau mir die Types nochmal genauer an, vielleicht versteh ichs dann Wink

@Hectic Ich glaube es ist viel zu viel Aufwand erstmal ein großes Bild aus den vielen kleineren zu erstellen um diese dann wieder auszulesen.
Zitat:
Ein risiges Image mit mehreren Tausend Pixeln Kantenlänge wird zwar ggf. von unterschiedlichen Grafikformaten unterstützt. Doch was nützt dir das, wenn du es mit keinem Grafikprogramm öffnen kannst, da du sicherlich keine Gigabyte an Grafikkartenspeicher hast.
und was du damit meinst versteh ich nicht ganz...ich habe doch garnicht von einem risigen Bild gesprochen.
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage
 

da_poller

BeitragFr, Jan 02, 2009 11:52
Antworten mit Zitat
Benutzer-Profile anzeigen
interessant wäre zu wissen für welchen zweck 3000(!) unterschiedliche bilder benötigt werden..

vorher ist jede hilfe nur wage anzusehen..

mabox

BeitragFr, Jan 02, 2009 11:57
Antworten mit Zitat
Benutzer-Profile anzeigen
https://www.blitzforum.de/worklogs/125/ lies dashier...
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage
 

da_poller

BeitragFr, Jan 02, 2009 12:03
Antworten mit Zitat
Benutzer-Profile anzeigen
ahh daher kommt mir die thematik so bekannt vor.. oke .. nun werden in dem bildpuzzle 3000 bilder angezeigt oder 3000 VERSCHIEDENE bilder verwendet?

werden 3000 bilder VERSCHEIDENE verwendet wirst du keine großen möglcihkeiten haben viel speicher einzusparen..

werden 3000 bilder angezeigt die teils gleich sind(wie ich im screen des WL sehe) kannst du jedes source bild 1 mal laden und anschließend so oft anzeigen wie du willst..

mehr fällt mir im moment nicht dazu ein.

mabox

BeitragFr, Jan 02, 2009 12:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie ich am besten Speicher einspare ich meiner Meinung nach schon geklärt (stand auch ursprünglich garnicht zur Frage). Mein Problem ist im Moment die Verbindung von den beiden Types (siehe Xeres Beitrag)

Und die Anzahl der verschiedenen Bilder und der gesamten Bilder variiert natürlich. Manchmal sind es 3000 verschiedene Bilder und auf dem gesamten Bild sind 8000 Bilder und manchmal sind es halt nur 600 verschiedene und auf dem gesamten Bild sind aber trotzdem 8000.
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage

tedy

BeitragFr, Jan 02, 2009 14:36
Antworten mit Zitat
Benutzer-Profile anzeigen
dann speicher doch die BIldaddresse einfach in dem Type
Die bilder hast du zuvor ja schon einmal geladen
Code: [AUSKLAPPEN]

type bild
 field x
 field y
 field bildadresse
end type
...
for each...
drawimage bild\bildaddresse,bild\x,bild\y
next
01010100 01100101 01000100 01111001 00100000 00111010 01000100

skey-z

BeitragFr, Jan 02, 2009 14:49
Antworten mit Zitat
Benutzer-Profile anzeigen
In deinem Worklog habe ich mal gelesen, dass du für jeden Pixel des Originalbildes einen Helligkeitswert bestimmst.
Nach meinem Wissen gibt es 256 Heligkeitsstufen.

Außerdem kannst du das Bild als Tilemap betrachten, im Endeffekt ist es nichts anderes, deshalb verstehe ich nicht so wirlich wo dein Problem liegt.

Wenn ich mal davon ausgehe, dass du nicht immer die gleichen Bilder nebeneinander haben möchtest, und für jede Stufe 4 Bilder nimmst, hast du 1024 Bilder jetzt kommt es auf die Größe der einzelnen Bilder an, mal angenommen, du verwendest 64² große Bilder (1024*64²*4), dann sind das ca 16MB und die sollten eigentlich in den Speicher passen.

Wenn man jetzt noch davon ausgeht, dass du für alle 3 Farben die Helligkeit berechnest, sind es 3072 Bilder, also ca 48 mb und das sollte auch kein Problem sein.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group