![]() |
Grenzen (Grösse) für timage
Hi,
ich benötige einen extrem grossen canvas für ein Feldberechnungsprojekt.
Delphi-Quellcode:
Hier meckert das Programm, dass nicht genügent Speicher zur Verfügung steht.
image1.Picture.Bitmap.Width:=10000;
image1.Picture.Bitmap.height:=10000; Habt ihr eine Idee wie ich das realisieren könnte. Muss auf einen canvas von mindestens 100000 * 10000 zeichnen. 100000 * 100000 wäre besser.
Delphi-Quellcode:
Tbitmap ist auch keine Lösung, das gleiche Problem.
t:=tbitmap.Create;
t.Width:=10000; t.height:=10000; t.free; Viele Grüsse |
Re: Grenzen (Grösse) für timage
Überlege mal was so ein großes Bild an Speicher benötigt
|
Re: Grenzen (Grösse) für timage
100.000 * 100.000 * 1Bit pro Pixel (swartz/weiss) = 10.000.000.000 Byte
10.000.000.000 Byte / 1024 = 9765625 kByte 9765625 / 1024 = kByte = 9536,7 MByte / 1024 = 9,31 GByte 100.000 * 100.000 * 8Bit pro Pixel (256 Farben) = 80.000.000.000 Byte ... = 74,5 GByte :gruebel: Das passt nun Weder in den Graka.-Speicher noch in den RAM des PC's. Was kann man machen ? einfach die Werte die man Berechnet und darstellen will scalieren. Dh. wenn der darzustellende Wert 80Mio Einheiten (was auch immer) hat kann man das zB. mit 80 oder 800 Pixeln darstellen. |
Re: Grenzen (Grösse) für timage
Skalieren ist eine Maßnahme, die andere ist ja sicherlich auch nur das zu berechnen/zeichnen, was auch wirklich gesehen wird.
Sherlock |
Re: Grenzen (Grösse) für timage
Hi,
skalieren geht nicht. Es werden Feldlinienbilder erzeugt. Dort kommt es absolut auf die Auflösung an. Des weiteren werden Äquipotentiallinien geschrieben. Eine Lösung wäre das Ganze in einer Plottersprache abzuspeichern und dann entsprechend auszugeben. Eine andere Lösung die mir einfällt ist den Canvas zu splitten. Diesen Weg werde ich wahrscheinlich gehen. Für die Bildschirmdarstellung wird Skalierung das Mittel zur Lösung des Problems sein. Vielen Dank |
Re: Grenzen (Grösse) für timage
Zitat:
100.000 * 100.000 * 1 Bit pro Pixel (Schwarz/Weiß) = 1250000000 Byte = 1,2 GB 100.000 * 100.000 * 8 Bit pro Pixel (256 Farben) = 10000000000 Byte = 9,3 GB 100.000 * 100.000 * 24 Bit pro Pixel (8 Bit RGB) = 30000000000 Byte = nur 28 GB :angel2: Zitat:
Zitat:
|
Re: Grenzen (Grösse) für timage
:duck: Jaja, Kopfrechnen un so...
|
Re: Grenzen (Grösse) für timage
Schau dir mal
![]() |
Re: Grenzen (Grösse) für timage
Hi,
ich habe eine Lösung gefunden: In meinem Fall ist das ganz einfach, ich reduziere die Farbtiefe auf 1 Bit. Mehr brauche ich für meinen Zweck nicht. Selbst 100000 * 100000 krieg ich noch hin.
Delphi-Quellcode:
Vielen Dank, mein Problem hat sich damit erledigt.
t:=tbitmap.Create;
t.PixelFormat:=pf1bit; t.SetSize(10000,10000); t.Canvas.MoveTo(1,1); t.canvas.LineTo(9999,9999); t.SaveToFile('c:\feld.bmp'); t.free; |
Re: Grenzen (Grösse) für timage
Solange es auf deinem Rechner läuft.
Im Falle dass das Ding auch auf anderen PC's laufen muss oder soll sieht es wohl möglich schlecht aus. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz