AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Grenzen (Grösse) für timage

Ein Thema von R2009 · begonnen am 23. Jun 2009 · letzter Beitrag vom 24. Jun 2009
Antwort Antwort
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#1

Grenzen (Grösse) für timage

  Alt 23. Jun 2009, 06:56
Hi,

ich benötige einen extrem grossen canvas für ein Feldberechnungsprojekt.

Delphi-Quellcode:
  image1.Picture.Bitmap.Width:=10000;
  image1.Picture.Bitmap.height:=10000;
Hier meckert das Programm, dass nicht genügent Speicher zur Verfügung steht.
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:
  t:=tbitmap.Create;
  t.Width:=10000;
  t.height:=10000;
  t.free;
Tbitmap ist auch keine Lösung, das gleiche Problem.

Viele Grüsse
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Grenzen (Grösse) für timage

  Alt 23. Jun 2009, 06:59
Überlege mal was so ein großes Bild an Speicher benötigt
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#3

Re: Grenzen (Grösse) für timage

  Alt 23. Jun 2009, 08:14
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



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.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Grenzen (Grösse) für timage

  Alt 23. Jun 2009, 08:36
Skalieren ist eine Maßnahme, die andere ist ja sicherlich auch nur das zu berechnen/zeichnen, was auch wirklich gesehen wird.

Sherlock
Oliver
  Mit Zitat antworten Zitat
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Grenzen (Grösse) für timage

  Alt 23. Jun 2009, 09:49
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
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.157 Beiträge
 
Delphi 12 Athens
 
#6

Re: Grenzen (Grösse) für timage

  Alt 23. Jun 2009, 09:56
Zitat von turboPASCAL:
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
Die Rechnung stimmt zwar nicht ganz, aber der Grund sollte dennoch klar sein


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

Zitat von R2009:
Eine Lösung wäre das Ganze in einer Plottersprache abzuspeichern und dann entsprechend auszugeben.
Delphis TImage kann EMF verstehen, aber ich weiß nicht, in wie weit man diese da auch erstellen kann.

Zitat von R2009:
Eine andere Lösung die mir einfällt ist den Canvas zu splitten.
dann aber nur die zu erstellen und zu berechnen, welche grad nötig sind, denn auch aufgeteilt würden alle EinzelCanvas diesen Speicher belegen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#7

Re: Grenzen (Grösse) für timage

  Alt 23. Jun 2009, 09:59
Jaja, Kopfrechnen un so...
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Grenzen (Grösse) für timage

  Alt 23. Jun 2009, 10:03
Schau dir mal DaVinci an. Diese haben wird auch im Einsatz und haben öfters (TIFF-)Dateien > 10000*10000 Pixel.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Grenzen (Grösse) für timage

  Alt 24. Jun 2009, 05:27
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:
  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;
Vielen Dank, mein Problem hat sich damit erledigt.
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#10

Re: Grenzen (Grösse) für timage

  Alt 24. Jun 2009, 07:36
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.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz