Riesen-BMP (für Karte)
Übersicht

![]() |
IguanBetreff: Riesen-BMP (für Karte) |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo!
Ich habe viele sehr grosse Bilder (Kartenausschnitte der Erde). Nun möchte ich gerne ein Programm schreiben, welches die einzelnen Stücke zusammensetzt und dann in ein Riesen-BMP speichert. Dass ab einer bestimmten Bildgrösse schluss ist mit BB, das weis ich schon. BB bringt es gerade noch knapp fertig, ein Einzelstück der Karte zu laden und zu zeichnen. Nun, ist es möglich irgendwie die Startposition im Riesenbild anzugeben, von wo aus die Daten des Einzelstückes reingeschrieben werden? Ich möchte das so erstellte Riesen-Bild NICHT wieder in BB laden... ist ja eh zu gross... Das ganze würde mir eine menge Photoshop-Arbeit ersparen!! Ist das irgendwie Möglich? Oder kennt ihr da eine andere Lösung? MfG Iguan |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Um welche Bildgrösse dreht es sich ?
(Also ein Teil und das gesamte ?) |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Iguan |
![]() Antworten mit Zitat ![]() |
---|---|---|
also ein einzelnes Teil hat die Masse: 3648x2736 Pixel
und davon möchte ich waagrecht ca. 50 und senkrecht auch ca. 50 aneinandersetzen... |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn ich mich nicht verrechnet habe willst Du eine 93 Gigabyte große Bitmap erstellen. Es dürfte Dich nicht verwundern zu erfahren dass das den Graphikkartenspeicher selbst guter Karten ein klitzekleines bisschen überfordert.
Kurzum: Vergiss es - such Dir eine Lösung die Bilder in Teilen zur Laufzeit einzuladen und zusammen zu pasten. Die Datei wäre zu groß um sie zu öffnen. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Iguan |
![]() Antworten mit Zitat ![]() |
---|---|---|
es könnte ja auch ein grosses JPG sein...
und wie gesagt, ich brauche schlussendlich nur die Datei... ich möchte sie NICHT in BB laden und zeichnen! Ist das immer noch unmöglich? (kann man nicht irgendwie angeben, von welcher Position aus in das RiesenJPG geschrieben wird...?) PS: ich benutze folgende function um die Datei als JPG zu speichern: Code: [AUSKLAPPEN] Function SaveImageAsJPEG(filename$, image, quality = 75) Local i, x, y, width, height Local buffer, bank Local c Local result width = ImageWidth(image) height = ImageHeight(image) buffer = ImageBuffer(image) bank = CreateBank(width * height * 3 + 1) LockBuffer buffer For y = 0 To height - 1 For x = 0 To width - 1 c = ReadPixelFast(x, y, buffer) c = ((c And $FF) Shl 16) Or (c And $FF00) Or ((c And $FF0000) Shr 16) PokeInt(bank, i, c) i = i + 3 Next Next UnlockBuffer buffer result = SaveJPEGFile(filename$, bank, quality, width, height) FreeBank(bank) Return result End Function |
||
![]() |
PowerProgrammer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Im Arbeitsspeicher sind Bilder nicht komprimiert.
Wofür benötigst du das Überhaupt? Ist das nicht übertrieben? Du müsstest dich wahrscheinlich selber mit dem BMP-Dateiformat auseinandersetzen. Außerdem ist auch dieses Dateiformat wohl nicht unendlich, oder? |
||
www.xairro.com Alles für Webmaster und Programmierer! Es gibt mehr als bloß einen Counter! |
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
he... das sind nur 69,7GB an Daten (wäre es 24-bit-bmp)
3648x50 = 182400 und BMP Datei kann max 65535 pixel breit/hoch sein... wie du siehst musst du 2. Sachen machen: 1) Eigenes Format erfinden oder ein Format finden das >65535 pixel haben kann (ich kenne jetzt keins). Es soll wohl auch komprimiert sein - (oder willst du neue Festplatte dafür kaufen?). Sowohl BMP als auch PNG scheiden aus (PNG ist recht langsam) - JPG ist dafür GUT - aber ob es so groß sein darf k.A. evtl. TIF oder sowas... 2) Dann musst du "nur" einen eigenen Writer für das format schreiben - da ich vermute, dass es keinen Writer gibt der solche Dateien schreiben kann... |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Doch ist es, solange du die Seitenlänge noch im verlangten Datenformat darstellen kannst ![]() Auch gibt es in 2D kein Problem mit der Grösse der Bilder im VRAM. Bilder nutzen ihn nicht. (nur Texturen) Allerdings ändert das nix daran, dass das Bild im RAM dennoch Höhe * Breite * Farbtiefe gross ist, also 93GB RAM brauchen würde. Also egal was du machst, da wirst du dir wohl was intelligenteres einfallen lassen müssen und zwar allgemein, denn selbst mit JPG reden wir hier noch über 10GB Daten also so ziemlich garnix realistisch fürchte ich. Einfachster Ansatz: Wird der Detailgrad der Originalbilder überhaupt gebraucht oder könnte man sie auf 1/2 seitenlänge oder gar 1/4 verkleinern ohne grössere Konsequenzen für die Endnutzung? |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Triton |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: es könnte ja auch ein grosses JPG sein...
Nein. Wenn du das Bild anzeigen willst, muss es ja trotzdem im Grafikkartenspeicher vorliegen. Und zu 65535 und bmp: ich konnte soeben mit Paint ein viel größeres Bild erstellen (zumindest in der Breite - Höhe hab ich bei 5 px gelassen..). Mit Irfanview kann man das nicht mehr laden, aber Paint selbst gibt es problemlos wieder. |
||
Coding: silizium-net.de | Portfolio: Triton.ch.vu |
![]() |
Iguan |
![]() Antworten mit Zitat ![]() |
---|---|---|
ok, dann lass ichs halt bleiben...
habe eben ein programm geschrieben, dass von www.maps.google.com selbständig scrollt und kartenausschnitte herausnimmt. Wollte daraus eine grosse Karte für eine Reise erstellen. |
||
![]() |
DerHase |
![]() Antworten mit Zitat ![]() |
---|---|---|
So eine gr0ße Karte wäre sehr unpraktisch auf einer Reise imho. | ||
Play Satyr! |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hmm net umbedingt. Wenn du sie ausdruckst, solltest du wegen der Grösse bei entsprechendem Material damit um den Erdball fliegen können ![]() Aber Mal ernsthaft: Wenn du damit eine Karte machen willst für Reisen und so, würde ich versuchen die Daten zu reduzieren, so das nur relevante Daten drauf sind und wenn möglich das dann auf Vektorgrafikniveau reduzieren. Dadurch wäre das ganze vermutlich viel einfacher möglich. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Triton |
![]() Antworten mit Zitat ![]() |
---|---|---|
...oder einen Straßenatlas kaufen. ![]() |
||
Coding: silizium-net.de | Portfolio: Triton.ch.vu |
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das Bild wäre dann laut meiner Rechnung, meiner Bildschirmauflösung (1024*768) und meinem 17" Bildschirm ~3807422 km² groß. Das ist ein 134tel der Erdoberfläche... Viel Spaß beim Drucken...
Edit: Hab grad gelesen das dus doch nicht versuchen willst. Weise Entscheidung |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group