40000 JPG-Dateien erstellen mit PHP

matthiasschnueriger

Erfahrenes Mitglied
Hallo community

Bin nicht sicher, ob ich im richtigen Forum bin, aber da ich mir vorstellen könnte, dass mein Problem mit PHP gelöst werden kann, versuch ich's einfach mal.

Ich muss +/- 40000 (ja, vierzigtausend...) weisse, 512x512px grosse JPG-Grafiken mit fortfolgenden Dateinamen haben. Und fragt jetzt bitte nicht wozu. ;-)

Die Dateinamen müssen folgendermassen aufgebaut sein:

img_000000_000000_0.jpg

Der erste sechsstellige Wert ist die X-Achse, der zweite sechsstellige Wert ist die Y-Achse und die letzte 0 braucht euch nicht zu kümmern, die ist statisch.

Dieses Spiel geht jetzt bis zu

img_000190_000090_0.jpg und das ganze noch ins negative, sprich

img_-000190_-000090_0.jpg

Keine Ahnung wie ich dabei vorgehen soll. Kann sich jemand mit genügend Vorstellungskraft, logischem Denkvermögen und PHP-Kenntnissen unterstützen? Ich denke es braucht schon ein Script dafür, oder? Photoshop oder der Mac Automator werden das nicht lösen können, denke ich...

Danke und Gruss
Matthias
 
Das ist nicht wirklich schwer (ungetestet):

PHP:
for($i = -190; $i <= 190; $i++)
{
  for($j = -90; $j <= 90; $j++)
  {
    // Dateinamen zusammen bauen
    $filename = sprintf("img_%06d_%06d.jpg", $i, $j);
    // Bild-Resource erzeugen
    $img = imagecreate(512, 512);
    if( $img )
    {
      // Hintergrundfarbe - weiss - besorgen
      $background_color = imagecolorallocate ($img, 255, 255, 255);
      // Hintergrund füllen
      imagefill($img, 0, 0, $background_color);
      // Als jpg speichern
      imagejpeg($img, $filename, 90);
      // Aufräumen
      imagedestroy($img);
    }
  }
}
 
Zuletzt bearbeitet:
Am besten einmal die Grafik erstellen.

Dann mit schleifen kopieren

PHP:
for(x = -190; x <= 190; $x++{
  for(y = -90; y <= 90; $y++{
    $filename = sprintf('img_%06d_%06d_0.jpg', $x, $y);
    //TODO Datei auf diesen Namen kopieren
  }
}

-- Zu spät --
Ausser dass der Format-String von saftmeister so ungültig ist *g*
 
Ich will ja nciht frech sein, aber
PHP:
$filename = sprintf(img_%06d_%06d.jpg", $i, $j);
Da fehlt immer noch ein " *g*
PHP:
$filename = sprintf("img_%06d_%06d.jpg", $i, $j);
 
Vielen dank für die super schnellen Antworten.
Wenn ich das richtig verstehe, sollte mit dem Script von saftmeister die Grafiken nicht nur kopiert und richtig benannt werden, sondern bereits die Ursprungsgrafik erstellt werden.

Wenn ich das Script von saftmeister so als test_jpg.php auf meinen Server lade und aufrufe, passiert gar nichts.
Muss ich da zuerst noch einen Speicherort für die Grafiken definieren? %06d bedeutet vermutlich, dass die hochzählende Zahl sechsstellig sein soll, korrekt?

Steh grad auf dem Schlauch. Das ich kein Programmierer bin muss ich ja nicht mehr erwähnen... :-/
 
das %06d ist eine Formatierung (siehe Doku zu sprintf()): Eine Zahl mit Vorzeichen auf 6 Stellen mit Nullen aufgefüllt.

Ich rate dir aber schon die Grafik mal eben mit einem Grafikprogramm zu erstellen und dann die Datei zu kopieren. Braucht mWn weniger Rechenleistung als jede Grafik einzeln zu erstellen.
 
Du kannst auch sonst die erste Grafik vom Script erstellen lassen und dann kopieren ;) Wäre auch eine Möglichkeit.
 
Zurück