Bilder sortieren

  • Ersteller pfannkuchen2001
  • Erstellt am
pfannkuchen2001

pfannkuchen2001

Aktives Mitglied
Thread Starter
Dabei seit
17.02.2006
Beiträge
2.600
Reaktionspunkte
48
Hallo,

ich weis nicht recht ob ich hier richtig bin, aber ich habe folgendes Problem zu lösen: Ich habe hier viele viele viele Bilder, alle durchnummeriert. Dazu gibt es ein csv file (Wahlweise auch als txt o.ä.) welches aus 3 Zeilen besteht: 1. Bildnummer, 2. x koordinate, y Koordinate.

Ich brauche nun eine Lösung wie ich (plattformunabhängig (win, osx)) die Bilder der Tabelle entsprechend sortieren kann.
Was im endeffekt ausgegeben wird ist eigentlich erstmal egal - ob nun html und konsorten oder gleich ein pdf (was die idealvariante wäre)

Ich poste das hier, da ich mir nun in den Kopf gesetzt habe, dass die eleganteste methode wäre, mit einem php script die tabelle einliest um dann automatisch die bilder zu sortieren (und dann per pdf ausgibt).

Ist der php plan einigermaßen realistisch oder gibt es eine einfachere Variante?

Über Ideen und Ansätze wäre ich sehr sehr sehr dankbar!!

Gruß

Pfannkuchen
 
Eine Webanwendung für plattformunabhängige Lösungen ist schonmal eine gute Idee!

Ja, das geht auch mit PHP. Ein gutes Tool um damit ein PDF zu erstellen ist für mich : http://fpdf.de/

Was muß man tun? Nun die CSV-Datei einlesen in eine Datenstruktur und dann gegeben an Deinen Sortierkriterien ( die mir nicht klar sind) die Bilder dann in ein PDF einfügen und dieses dann zum streamen oder download ausliefern. All das geht in PHP ja!
 
So,

ich habe mich mal (wie gesagt, als vollkomener php nixkönner) gestern abend dran gesetzt und folgendes geschrieben:

PHP:
<?php

$csv = 'features.bm'; //CSV File
$line = -2; //Unsinn - versuch das CSV File von der 2. Zeile an zu lesen
$x_pos = 0;
$y_pos = 0;
$x_px = 200;
$y_px = 100;

$file = fopen($csv, 'r');
while (($line = fgetcsv($file, 1000, "\t")) !== FALSE) {


// ermitteln des größten x Werts (größe des gesamtbildes x)
if ($line[1] > $x_pos) {
$x_pos = $line[1];
}
// ermitteln des größten y Werts (größe des gesamtbildes y)
if ($line[2] > $y_pos) {
$y_pos = $line[2];
}
}
fclose($file);

//echo $x_pos, "\n";
//echo $y_pos, "\n";
$x_bild_px = $x_pos * ($y_px/2)+$x_px; //Warum durch 2... ...keine Ahnung ;) + 1* Einzelbildbreite
$y_bild_px = $y_pos * ($x_px/2);
//echo $x_bild_px, "\n";
//echo $y_bild_px, "\n";

//SVG Header
echo '<?xml version="1.0" encoding="utf-8"?>', "\n";
echo '<svg version="1.0" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="',$x_bild_px,'" height="',$y_bild_px,'"
x="0px" y="0px" viewBox="0 0 ',$x_bild_px,' ',$y_bild_px,'" xml:space="preserve">', "\n";

$file = fopen($csv, 'r');

//Schreiben der Image Links im SVG
//
while (($line = fgetcsv($file, 1000, "\t")) !== FALSE) {
  //$line is an array of the csv elements
$x = $line[1] * ($x_pos) + 40;
$y = $line[2] * $y_pos + 40;

if (!empty($line[2])){ //abfangen der ersten beiden Zeilen
echo '<image style="overflow:visible;" width="',$x_px,'" height="',$y_px,'" id="XMLID_1_" xlink:href="bilder/',$line[0],'.jpg" transform="translate(', $x ,',',$y,')">';

echo '</image>', "\n";

//Schreiben der IDs
echo '<text x="',$x,'" y="',$y,'" style="font-size:20px">ID_',$line[0],'</text>', "\n";


}

}
fclose($file);

//SVG Closer
echo '</svg>', "\n";

//FIN
?>

Das Funktioniert sogar! Ich bekomme nun ein SVG mit verlinkten bildern.

Zwei Sachen würde ich gern noch machen, weis aber nicht so recht was ich googlen kann:
1. Die Verlinkten Bilder im SVG würde ich gern Multiplizieren übereinander - wenn es also überlappungen gibt, sollen beide erkennbar sein.
2. Wie kann ich das ganze ding zu einem PDF Machen, in dem alle verlinkungen in dem PDF selbst stecken? (im Moment ist es ja eher eine linkliste bei der die vielen Bilder immer mitgenommen werden müssen...)
und naja eigentlich ein 3.: was sagt jemand dazu, der schonmal was mit PHP zu tun hatte? Richtiger Ansatz? (funktioniert ja immerhin ;) )

Gruß und Danke schonmal!!

Pfannkuchen
 
Zurück
Oben Unten