Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
17.06.2005, 17:36
scus



Moin moin,
ich hab hier ein kleines Problem: Ich habe eine Datei (www.scus.net/data.txt, 1,7 mb) die ungefähr so aussieht (nur mit 1104 * 420 werten):
Quellcode:-3;3;6;45;42;23;...
4;3;2;1;43;2;...
88;76;54;34;22;11;...
...;...;...;...;...;...;...
Die Zahlen sind Höheninformationen... Jetzt möchte ich diese Datei auslesen und als Bild darstellen, wobei jede Zahl ein Pixel darstellt:
PHP-Quellcode:<?php
$file 
"./data.txt";
$lines file($file)
    or die(
"Fehler");

header("Content-type: image/jpeg");

$x 1104;
$y 420;
$img_hl imagecreate($x$y);
imagefill($img_hl00imagecolorallocate($img_hl240240240));
$y_pos 0;


foreach(
$lines as $line) {
    
$data explode(";"$line);
    
    for(
$x_pos 0$x_pos count($data); $x_pos++) {
        
$color round(($data[$x_pos] + 30) / 6); //Der größte Wert ist 1350 / 6 ~ 230
        
imagesetpixel($img_hl$x_pos$y_posimagecolorallocate($img_hl$color$color$color));
    }
    
    
$y_pos++;
}
imagejpeg($img_hl);
?>
Das Problem ist, dass der mir nur Schwarz zeigt... Die Datei kann er anscheinend jedoch problemlos auslesen...

--

sincères amitiés scus
--
Tand, Tand ist das Gebilde von Menschenhand


Dieser Beitrag wurde am 17.06.2005 um 17:39 von scus bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
001
17.06.2005, 18:06
Riddle



Lol...ich kann dir leider nich helfen...aber das muss ich trotzdem mal loswerden....WAS soll das überhaupt?ich find das irgendwie sinnlos...wenn man ein bild haben will kann man doch nen bild hochladen oder?

--

zum Seitenanfang zum Seitenende Profil || Suche
002
17.06.2005, 18:21
scus



ich hab halt die daten nur in so 'ner textdatei... solche daten bekommt man übrigens da: http://www.ngdc.noaa.gov/seg/topo/globe.shtml

--

sincères amitiés scus
--
Tand, Tand ist das Gebilde von Menschenhand


Dieser Beitrag wurde am 17.06.2005 um 18:26 von scus bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
003
17.06.2005, 18:28
CN



riddle was laberst du da?

scus welche datei isn das da, würde mich auch mal interessieren sowas zu machen

--

zum Seitenanfang zum Seitenende Profil || Suche
004
17.06.2005, 18:28
Riddle



Aso, also versuchst du aus einer höhendatei ein bild zu machen und da du keine andere methode kennst benutzt du php? Und wenn ich das richtig auf der website sehe, vermute ich das dass eine relief karte der erde is?...naja is ja echt interessant...poste dann mal wenn du es hingekriegt hast und zeig dann das ergebnis;)
Edit:
lol wer lesen kann is klar im vorteil....

--


Dieser Beitrag wurde am 17.06.2005 um 18:33 von Riddle bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
005
17.06.2005, 18:32
scus



@cn: http://www.ngdc.noaa.gov/cgi-bin/seg/ff/nph-newform.pl/seg/topo/customdatacd da kannst du dir so dateien erzeugen lassen

@riddle: kennst du ne gute möglichkeit?

--

sincères amitiés scus
--
Tand, Tand ist das Gebilde von Menschenhand

zum Seitenanfang zum Seitenende Profil || Suche
006
17.06.2005, 18:37
Riddle



Nee tut mir leid...könnte mir nur vorstellen das es da irgend ne freeware für gibt...
Ich meinte das nur mit php weil mir das spontan merkwürdig vorkam;)Deswegen hab ich das auch mit den höhendaten schnell überlesen und mich nur gewundert wie man aus zahlen gerne ein bild machen würde;)

--

zum Seitenanfang zum Seitenende Profil || Suche
007
17.06.2005, 19:32
Megge



Riddle...mir fallen gleich haufenweise unflätige Wörter ein, aber egal.

--

zum Seitenanfang zum Seitenende Profil || Suche
008
17.06.2005, 20:48
HammerBlade



Ich hab mir das gerade mal in C++ implementiert und bekomme das hier: http://majestic42.net/matthias/stuff/data.jpg

Edit:
Und wenn ich deinen Code richtig verstehe, müsste der dir das gleiche Bild erzeugen, denn ich hab auch RGB(0,0,0) = 'Minimum in der Map' und RGB(255,255,255) = 'Maximum in der Map'.

--

"Mit C++ (noch besser mit C) kann man sich _sehr_ leicht in den Fuss schiessen." - theDon
Auspack und freu! - Auszug aus einer, aus dem japanischen übersetzten, Bedienugsanleitung für ein Spielzeugaquarium.
--
Photon Audio Player | Majestic42.net | How To Ask Questions The Smart Way


Dieser Beitrag wurde am 17.06.2005 um 21:03 von HammerBlade bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
009
18.06.2005, 20:49
scus



joa, so soll das dann auch aussehen, bei mir siehts aber so aus: www.scus.net/image.php...

[edit]
hmmm... jetzt gehts, weiss allerdings nicht was ich geändert habe ausser imagecreatetruecolor(); statt imagecreate();

hier der funktionierende code:
PHP-Quellcode:<?php
$file 
"./data.txt";
$lines file($file)
    or die(
"Fehler");

header("Content-type: image/jpeg");

$x 1104;
$y 420;
$img_hl imagecreatetruecolor($x$y);

$y_pos 0;
foreach(
$lines as $line) {
    
$data explode(";"$line);
    
    for(
$x_pos 0$x_pos count($data); $x_pos++) {
        
$color round(($data[$x_pos] + 30) / 6); //Der größte Wert ist 1350 / 6 ~ 230
        
imagesetpixel($img_hl$x_pos$y_posimagecolorallocate($img_hl$color$color$color));
    }
    
    
$y_pos++;
}

imagejpeg($img_hl);
?>

--

sincères amitiés scus
--
Tand, Tand ist das Gebilde von Menschenhand


Dieser Beitrag wurde am 18.06.2005 um 21:09 von scus bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
010
18.06.2005, 21:22
Spike



also ich habs jetzt hinbekommen. http://spike-fx.net/image.php
du hättest einfach mal die werte dir ausgeben lassen sollen, die von imagecolorallocate kommen. dann hättest du gesehen, das nach 256 durchläufen nur noch -1 kommt.
sieht so aus als kann man farben nur einmal zuweisen.

hier der veränderte code:
PHP-Quellcode:<?php
$file 
"./data.txt";
$lines file($file)
    or die(
"Fehler");



$x 1104;
$y 420;
$img_hl imagecreate($x$y);
//imagefill($img_hl, 0, 0, imagecolorallocate($img_hl, 240, 240, 240));
$y_pos 0;
$color2 0;

for (
$i=0$i<255$i++)
{
  
$colortbl[$i] = imagecolorallocate($img_hl$i$i$i);
}

foreach(
$lines as $line)
{
  
$data explode(";"$line);

  for(
$x_pos 0$x_pos count($data); $x_pos++)
  {
    
$color round(($data[$x_pos] + 30) / 6); //Der größte Wert ist 1350 / 6 ~ 230
    //print imagecolorallocate($img_hl, $color, $color, $color).' ';
    
imagesetpixel($img_hl$x_pos$y_pos$colortbl[$color]);
  }
  
$y_pos++;
}

header("Content-type: image/jpeg");
imagejpeg($img_hl);
?>
edit: das gibs doch nicht. jetzt las ich den thread offen, geh ne weile weg, komm wieder, such nach ner lösung und du hast das schon gelöst :D

--

Kill? Box? Killbox!
Die Intelligenz ist eine Konstante, nur die Bevölkerung wächst.


Dieser Beitrag wurde am 18.06.2005 um 21:24 von Spike_900 bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
011
19.06.2005, 11:34
oxff



imagecreate(..) erstellt halt nur ein Bild mit einer Palette von 256 Farben. Jedes imagecolorallocate erstellt dann einen neuen Eintrag in dieser Palette. Bei imagecreatetruecollor(..) übernimmt die Funktion imagecolorallocate sozusagen nurnoch das Kodieren der Farbe.

--

mwcollect - mein Projekt | oxlog - mein blog | happyhardcore.com Stream - gute Musik

zum Seitenanfang zum Seitenende Profil || Suche
012
19.06.2005, 12:19
scus



@0xFF: achso... auf php.net sind diese funktionen nur spärlich beschreiben.
@spike: trotzdem danke für die hilfe!

--

sincères amitiés scus
--
Tand, Tand ist das Gebilde von Menschenhand

zum Seitenanfang zum Seitenende Profil || Suche
013
19.06.2005, 17:30
Phaeilo



jup bei jpgs sollte man immer imagecreatetruecolor nehmen

--

HL³ Stuff

zum Seitenanfang zum Seitenende Profil || Suche