Krabathor: Per CronJob Bildgröße ändern?

Hallo,

ich habe ein Verzeichnis voll mit Bildern. Nun will ich 2 mal am Tag ein CRONJOB durchlaufen lassen, welches alle bilder die größer als 800*600 sind auf 800*600 runterholt.

die dateinamen dürfen sich nicht ändern!

hat jemand eine idee?

vielen dank im vorraus!

  1. Hallo,

    hat jemand eine idee?

    Das Programm mogrify aus dem Imagemagick-Paket sollte das können. Imagemagick steht in den meisten Linux-Distributionen auch als Paket zur Verfügung.

    Gruß

    Stareagle

  2. hi,

    hat jemand eine idee?

    In Perl, ja:
    use Image::Size;

    Btw., sehr einfach zu handhaben, das Modul. Den Cronjob kriegst Du hin, oder?

    Viele Grüße,
    Hotte

    1. hi,

      hat jemand eine idee?

      In Perl, ja:
      use Image::Size;

      Btw., sehr einfach zu handhaben, das Modul. Den Cronjob kriegst Du hin, oder?

      Viele Grüße,
      Hotte

      Hey des isses aber mit pearl kenne ich much null aus wie muss ich die datei nennen?

      als modul habe ich mal folgendes:

      #!/usr/bin/perl -w

      use strict;
      use Image::Magick;
      use Image::Size;

      my $image = Image::Magick->new;
      my @grafiken = ();

      opendir(DIR,'.') or die "Cant open directory : $!\n";
           while (defined($_ = readdir(DIR)))  {
           if ($_ =~ /^.+?.jpg$/i)  {
           push @grafiken, $_;
           }
      }
      closedir DIR;
      foreach (@grafiken)  {
      my $image = Image::Magick->new;
      my $img = $image->Read(filename=>$_);
      my ($x, $y) = imgsize($_);
      my ($width, $height) = ($x / 2.5, $y / 2.5);
      $img = $image->Resize("$width x $height");
      $img = $image->Write(filename=>$_);
      }

      mit welches dateinamen muss des jetzt gespeichert werden? wo bekomme ich diese dateien her?

      use Image::Magick;
      use Image::Size;

      danke im vorraus

      1. hi,

        Hey des isses aber mit pearl kenne ich much null aus wie muss ich die datei nennen?

        das Script? ist egak wie das heißt. In der crontab muss es nur mit richtigen Namen und vollständiger Pfadangabe genannt sein. Für Perl-Scripts ist die Erweiterung .pl üblich.

        opendir(DIR,'.') or die "Cant open directory : $!\n";

        ^ das geht in einem Cronjob hundertprozentig schief, weil:

        relative Pfade ebend relativ sind.

        Die beiden von Dir genannten Module kriegst Du bei CPAN, oder gib einfach mal die Modulnamen in der SuMasch ein.

        Istallieren tust Du Perl-Module mit Adminrechten.

        Kurze Anleitung:
        Comprehensive Perl Archive Network
        CPAN ist wie folgt zu erreichen:
        http://www.cpan.org/
        Suchseite:
        http://theoryx5.uwinnipeg.ca/CPAN/cpan-search.html

        Traditionell wird das entsprechende Modul per HTTP auf die Lokale Maschine
        gebracht (download via Browser oder wget).

        In einem temporären Verzeichnis auspacken (z.B. tar -xzf Modulname, tar -xf Modulname)
        und dann in das dem Modul entsprechende Verzeichnis wechseln.

        README lesen! Hier stehen immer wichtige Informationen und ggf. Abhängigkeiten
        sowie Hinweise zur Installation des Moduls. Manche Module erfordern einen ANSI C-Compiler
        wie zum Beispiel das Modul Date::Calc

        In der Regel sind dann mit root Berechtigung (!) die folgenden Kommandos abzusetzen:
        perl Makefile.PL
        make
        make test
        make install

        Dabei bitte Hinweise auf der Konsole beachten, diese sind manchmal sehr hilfreich
        bei Installationsproblemen.

        Good Luck,
        der Hotti

  3. Hallo,

    also das Skript hier funktioniert ja soweit das bild wird schön verkleinert und dann auch angezeigt. das problem ist dass es nicht gespeichert wird. was fehlt mir denn da?

    komme einfach nicht drauf
    krabathor

    <?php
      $bild = "/homepages/4/d19176991/htdocs/www_aukdox/enter/test/IMG_0003.jpg";
      $neuesBild = "/homepages/4/d19176991/htdocs/www_aukdox/enter/test/neu/IMG_0003.jpg";
      $size = getimagesize($bild);
      $breite = $size[0];
      $hoehe = $size[1];

    $neueBreite = 480;
      $neueHoehe = intval($hoehe*$neueBreite/$breite);

    $altesBild = imagecreatefromjpeg($bild);
      $neuesBild = imagecreatetruecolor($neueBreite, $neueHoehe);
      imagecopyresampled($neuesBild, $altesBild, 0, 0, 0, 0, $neueBreite, $neueHoehe, $breite, $hoehe);
      header("Content-type: image/jpeg");
      imagejpeg($neuesBild);
    ?>

    1. <?php
        $bild = "/homepages/4/d19176991/htdocs/www_aukdox/enter/test/IMG_0003.jpg";
        $neuesBild = "/homepages/4/d19176991/htdocs/www_aukdox/enter/test/neu/IMG_0003.jpg";
        $size = getimagesize($bild);
        $breite = $size[0];
        $hoehe = $size[1];

      $neueBreite = 480;
        $neueHoehe = intval($hoehe*$neueBreite/$breite);

      $altesBild = imagecreatefromjpeg($bild);
        $neuesBild = imagecreatetruecolor($neueBreite, $neueHoehe);
        imagecopyresampled($neuesBild, $altesBild, 0, 0, 0, 0, $neueBreite, $neueHoehe, $breite, $hoehe);
        header("Content-type: image/jpeg");
        imagejpeg($neuesBild);
      ?>

      So ein Zufall!

      Benjamin hat hier: http://forum.de.selfhtml.org/?t=167417&m=1091833 exakt das Gleiche Problem wie du! (Und im Übrigen auch eine Lösung.)

      1. Hi,

        So ein Zufall!

        Benjamin hat hier: http://forum.de.selfhtml.org/?t=167417&m=1091833 exakt das Gleiche Problem wie du!

        Und da der Code identisch ist, koennte man sogar meinen, es handle sich bei beiden um ein und die selbe, das Manual nicht lesen koennende, dafuer aber doppelpostende Pfeiffe ...

        MfG ChrisB