AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Riesiges Bild erstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Riesiges Bild erstellen

Ein Thema von diabox · begonnen am 16. Apr 2010 · letzter Beitrag vom 16. Apr 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von diabox
diabox

Registriert seit: 13. Sep 2006
61 Beiträge
 
Delphi 2010 Professional
 
#1

Riesiges Bild erstellen

  Alt 16. Apr 2010, 16:45
Hallo,

ich würde gerne extrem viele Bildteile (jeweils 600 x 430 Pixel) in einem Bild zusammenfügen und dann verkleinern. Dabei stoße ich natürlich an die Grenzen meines Arbeits- und/oder Grafikspeichers.
Nach einigem Suchen bin ich mittlerweile bei der Graphics32 Bibliothek angelangt, aber auch hier erhalte ich schon bei einem Bruchteil der von mir benötigten Bildgröße eine Exception:

Karte.Bitmap.SetSize(600*700, 430*3); //700 Bilder in der Breite, 3 in der Höhe
Zitat:
Erste Gelegenheit für Exception bei $76D9B727. Exception-Klasse Exception mit Meldung 'Can't allocate the DIB handle'. Prozess nnMerge.exe (3704)
Gibt es eine Möglichkeit mit so großen Bildbereichen wie (W: 600*700, H: 430*900) zu arbeiten oder werde ich das Bild in mehrere Teile aufteilen müssen?
Wer zweifelt, detoniert nicht!'
Dieter Nuhr
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#2

Re: Riesiges Bild erstellen

  Alt 16. Apr 2010, 16:47
Die Frage ist, was du damit vor hast Wenn dein Arbeitsspeicher nicht reicht, dann musst du andere Wege finden.

Wenn du ein Spiel programmieren willst, dann hast du ja eine fest vorgegebene Größe, die du sehen kannst, mehr geht nicht. Den Rest kannst du ja nach einem Verschieben" des Bildes nachladen. Du kannst sicherlich auch schon mehr um das Bild herum puffern, nur darf es halt einfach nicht zu viel werden.

// edit

du kannst das riesen Bild zwar schon in eine Datei klatschen, wobei ich dir das nicht unbedingt empfehlen würde
benenne die Stücke des großen Bildes lieber sinnvoll und erarbeite dir einen sauberen Load-Aglorithmus, der immer einzelne Teile von der HDD lädt.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Riesiges Bild erstellen

  Alt 16. Apr 2010, 16:56
.. warum verkleinerst Du die Bildteile nicht schon vor dem Zusammenfügen?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
tkone

Registriert seit: 2. Okt 2009
Ort: Sachsen
63 Beiträge
 
Delphi 7 Professional
 
#4

Re: Riesiges Bild erstellen

  Alt 16. Apr 2010, 17:04
für riesige datenmengen einfach den virtuellen speicher von windows vergrößern.
ich hab für ein projekt 9GB freigegeben um alle notwendigen berechnungen durchzuführen
  Mit Zitat antworten Zitat
Benutzerbild von diabox
diabox

Registriert seit: 13. Sep 2006
61 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Riesiges Bild erstellen

  Alt 16. Apr 2010, 17:06
Es handelt sich eigentlich um ein Kartenprogramm Die Bildteile sind schon vernünftig benannt (x_y.png), aber es sind nunmal sehr viele Bildteile und jetzt möchte ich möglichst schnell eine Übersichtskarte daraus erstellen
Wenn ich jedes einzelne Bild verkleinere ist das Ergebnis doch hinterher bestimmt nicht so exakt wie, wenn ich die gesamte Karte in Orginalgröße verkleinere, oder lohnt sich der Aufwand?
Wer zweifelt, detoniert nicht!'
Dieter Nuhr
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#6

Re: Riesiges Bild erstellen

  Alt 16. Apr 2010, 17:07
Auch wenn etwas OT wird: Hast dann wenigstens ein SSD-RAID? Sonst dauert das ganze Ein- und Auslagern ja ewige Zeiten...

// edit

naja, überleg doch mal, was so kompression-algos machen. wenn du erst die eile verkleinerst und dann zusammenfügst bekommst du in etwas das gleiche ergebnis und sollte nicht wesentlich schlechter sein. du kannst es ja auch mal mit einer "riesen" image von 1280x1024 probieren und das auf 125x100 (geschätzt) komprimierten und dann das Ganze auch noch mit den Teilstücken machen.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
tkone

Registriert seit: 2. Okt 2009
Ort: Sachsen
63 Beiträge
 
Delphi 7 Professional
 
#7

Re: Riesiges Bild erstellen

  Alt 16. Apr 2010, 17:09
Zitat von diabox:
Wenn ich jedes einzelne Bild verkleinere ist das Ergebnis doch hinterher bestimmt nicht so exakt wie, wenn ich die gesamte Karte in Orginalgröße verkleinere, oder lohnt sich der Aufwand?
theoretisch dürfte es nur kleine unterschiede an den fügestellen geben.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Riesiges Bild erstellen

  Alt 16. Apr 2010, 17:33
Zitat von diabox:
W: 600*700, H: 430*900
Macht bei 32 Bit Farbtiefe (600*700*430*900*32)/8 = 650.160.000.000 Bytes = 634.921.875 KB = 620.041 MB = 606 GB. Da kannst du noch so viel virtuellen Speicher zulassen, das ist schlicht und ergreifend um Größenordnungen VIEL zu viel.

Verkleinere die Einzelbilder, und füge diese zusammen. Wenn du dir Sorgen um die Kachelränder machst, bastel dir einen eigenen Verkleinerungs-Algo, der die Ränder der angrenzenden Kacheln in passender Dicke mit beachtet - allerdings bezweifel ich, dass man den unterschied überhaupt wirklich wahrnehmen wird. Aber 600GB temporäre Daten sind für handelsübliche PCs und diese Aufgabe fern ab von "angemessen" bzw. machbar.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#9

Re: Riesiges Bild erstellen

  Alt 16. Apr 2010, 17:52
Zitat von Medium:
Verkleinere die Einzelbilder, und füge diese zusammen. Wenn du dir Sorgen um die Kachelränder machst, bastel dir einen eigenen Verkleinerungs-Algo, der die Ränder der angrenzenden Kacheln in passender Dicke mit beachtet
Wenn der Verkleinerungsgrad mehr als 50% beträgt dürfte bei es Karten als Ausgangsmaterial (die je selten große Sprünge haben, was in der Natur der Sache liegt) auch ausreichen, statt der benachbarten Kacheln nur die eigene zu betrachten. Dann müsste man einfach die oberste Zeile noch einige Male darüber einfügen (das gleiche rechts, unten und links) und nachher wieder wegschneiden. Wenn man den Verkleinerungsgrad kennt, kann man sicher ausrechnen, wie viele Zeilen man beachten muss
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Riesiges Bild erstellen

  Alt 16. Apr 2010, 17:56
.. vielleicht kannst Du das zusammenhängen der (verkleinerten) Bilder
auch mit externen Software bewerkstelligen - stitching

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:14 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