Olli: Suche Perl-Modul o.ä. zur Formatänderung (resize) v. Grafiken

Hi,

ich suche schon ewig verzweifelt und erfolglos ein Perl-Modul oder eine Library, mit der ich eine Grafik in der Größe verändern kann, also z.B. von 150x150 Pixel auf 90x90 Pixel runterrechnen.

Wichtig hierbei ist, daß ich das Modul einfach auf meinem Server nutzen kann, ohne es mit Root-Rechten installieren zu müssen.

Bisher habe ich ImageMagick / PerlMagick gefunden, aber dieses müßte leider von meinem Hoster installiert werden, soweit ich weiß. Und mein Hoster möchte dies leider nicht tun.
Oder irre ich mich? Kann ich es einfach in mein CGI-BIN verzeichnis kopieren, einrichten und dann benutzen?

Hintergrund: Ich betreibe eine kleine Community, wo die Besucher einen Avatar als userpic hochladen können. Leider haben diese Avatare jedoch oftmals ein anderes Format als das gewünschte von 90x90 Pixeln.
Und statt die Grafiken per HTML auf 90x90 zu verzerren, möchte ich per Perl die Grafiken maßstabsgerecht herunterrechnen, ggf. auch einen weißen Rand hinzufügen (falls ein rechteckiges Bild statt eines quadratischen hochgeladen wurde).

Ich hoffe, Ihr könnt mir weiterhelfen. Ich such mich schon seit Tagen dusselig im Netz und hab echt nix gefunden. Ich bedank mich schonmal im Voraus für Eure Hilfe und Mühe!

Viele Grüße aus Berlin

Olli

  1. Hallo,

    Bisher habe ich ImageMagick / PerlMagick gefunden, aber dieses müßte leider von meinem Hoster installiert werden, soweit ich weiß. Und mein Hoster möchte dies leider nicht tun.
    Oder irre ich mich? Kann ich es einfach in mein CGI-BIN verzeichnis kopieren, einrichten und dann benutzen?

    ImageMagick muß installiert werden (verwendet C-Teile).

    Hintergrund: Ich betreibe eine kleine Community, wo die Besucher einen Avatar als userpic hochladen können. Leider haben diese Avatare jedoch oftmals ein anderes Format als das gewünschte von 90x90 Pixeln.
    Und statt die Grafiken per HTML auf 90x90 zu verzerren, möchte ich per Perl die Grafiken maßstabsgerecht herunterrechnen, ggf. auch einen weißen Rand hinzufügen (falls ein rechteckiges Bild statt eines quadratischen hochgeladen wurde).

    Ich glaube nicht, daß Du für solche rechenintensive Routinen ein Script findest, das ohne Installation (sprich C-Teilen) auskommt. Vielleicht ist Folgendes eine Lösung:
    Verwende Image::Size, um die Größe des Bildes bestimmen zu können. Wenn Du das dann richtig umrechnest zB. von 180x120 auf 90x60 und diese Größen für die width- und height-Werte im img verwendest, dann ist das Bild nicht verzerrt.
    Und wenn Du mit Image::Size feststellst, daß Dir jemand ein Bildmonster uploaden möchte, kannst/solltest Du's abblocken.

    Manfred

    1. Ich glaube nicht, daß Du für solche rechenintensive Routinen ein Script findest, das ohne Installation (sprich C-Teilen) auskommt. Vielleicht ist Folgendes eine Lösung:
      Verwende Image::Size, um die Größe des Bildes bestimmen zu können. Wenn Du das dann richtig umrechnest zB. von 180x120 auf 90x60 und diese Größen für die width- und height-Werte im img verwendest, dann ist das Bild nicht verzerrt.
      Und wenn Du mit Image::Size feststellst, daß Dir jemand ein Bildmonster uploaden möchte, kannst/solltest Du's abblocken.

      Manfred

      Das wird wohl der einzigste Weg sein mit Image::Size, außer es würde über GD laufen.

      1000 dank, ihr habt mich gerettet :o)

      olli

  2. Habe mich vielleicht ein bißchen unklar ausgedrückt:

    Ich möchte die Grafiken maßstabsgetreu skalieren.
    Ich habe keine Root-Rechte.

    Ich hätte allerdings die GD-Library Version 1.33, eine alte Version also, noch mit GIF-unterstützung. Kann diese Version denn auch mit JPG umgehen?

    ich hoffe, ihr könnt mir helfen... *liebguck*

    danke, olli

  3. Hi,

    Bisher habe ich ImageMagick / PerlMagick gefunden, aber dieses müßte leider von meinem Hoster installiert werden, soweit ich weiß. Und mein Hoster möchte dies leider nicht tun.
    Oder irre ich mich? Kann ich es einfach in mein CGI-BIN verzeichnis kopieren, einrichten und dann benutzen?

    normalerweise kann man Perl-Module auch ohne "richtige" Installation benutzen. Bei den Grafikmodulen (z.B. PerlMagick oder GD) wird allerdings eine vorher installierte Bibliothek vorausgesetzt, da die Perlmodule nicht die Funktionalität selbst implementieren, sondern nur APIs (also Programmierschnittstellen) zu den jeweiligen Paketen darstellen. Wenn Dein Provider aber nichtmal ein Modul für Dich installieren will, und Dir Dein Projekt am Herzen liegt, solltest Du wirklich wechseln.

    Ich hoffe, Ihr könnt mir weiterhelfen. Ich such mich schon seit Tagen dusselig im Netz und hab echt nix gefunden. Ich bedank mich schonmal im Voraus für Eure Hilfe und Mühe!

    Ist auf dem Server ImageMagick installiert? Dann könntest Du versuchen die Bilder mit einem Systemaufruf zu konvertieren. Das kannst Du am besten testen, wenn Du einen ssh-Zugang hast (wohl eher nicht, oder?), bzw. ein Skript schreibst, das den "convert" Befehl einfach mal aufruft:

    #!/usr/bin/perl -w
    print convert;

    das sollte im Browser erstmal etwas (Informationen über Optionen von convert) ausgeben. Wenn das funzt, kann ich Dir weiterhelfen.

    Viele Grüsse
    Achim

    1. Nachtrag:

      #!/usr/bin/perl -w
      print convert;

      Bitte auf die Backticks (`) achten!

      Ciao
      Achim

      PS: GD kann soweit ich weis nur 256 Farben verarbeiten. Erst neuere Versionen können auch mit höheren Farbtiefen umgehen (AFAIK).

    2. normalerweise kann man Perl-Module auch ohne "richtige" Installation benutzen. Bei den Grafikmodulen (z.B. PerlMagick oder GD) wird allerdings eine vorher installierte Bibliothek vorausgesetzt, da die Perlmodule nicht die Funktionalität selbst implementieren, sondern nur APIs (also Programmierschnittstellen) zu den jeweiligen Paketen darstellen. Wenn Dein Provider aber nichtmal ein Modul für Dich installieren will, und Dir Dein Projekt am Herzen liegt, solltest Du wirklich wechseln.

      Ist auf dem Server ImageMagick installiert? Dann könntest Du versuchen die Bilder mit einem Systemaufruf zu konvertieren. Das kannst Du am besten testen, wenn Du einen ssh-Zugang hast (wohl eher nicht, oder?), bzw. ein Skript schreibst, das den "convert" Befehl einfach mal aufruft:

      #!/usr/bin/perl -w
      print convert;

      das sollte im Browser erstmal etwas (Informationen über Optionen von convert) ausgeben. Wenn das funzt, kann ich Dir weiterhelfen.

      Viele Grüsse
      Achim

      ImageMagick ist leider nicht installiert, und mein Hoster möchte es auch nicht für mich installieren.
      Stattdessen habe ich aber GD in der Version 1.33 drauf. Ich habe gehört, daß bei den neuen Versionen kein GIF mehr akzeptiert wird, bei meiner 1.33 müßte es aber noch gehen. Läuft da denn aber auch JPG? Hoffentlich...
      Ansonsten muß ich, wie mir hier schon der Tip gegeben wurde, mit Image:Size die Größe feststellen, im Script sozusagen "per Hand" maßstabsgerecht das Format herunterrechnen und in HTML dann die Datei auf das heruntergerechnete Format zerren. Sieht dann aber sicherlich auch sehr pixelig aus...

      Vielen, vielen Dank!!!

      olli

      1. Hi,

        ImageMagick ist leider nicht installiert, und mein Hoster möchte es auch nicht für mich installieren.
        Stattdessen habe ich aber GD in der Version 1.33 drauf. Ich habe gehört, daß bei den neuen Versionen kein GIF mehr akzeptiert wird, bei meiner 1.33 müßte es aber noch gehen. Läuft da denn aber auch JPG? Hoffentlich...

        .jpg müsste eigentlich gehen. Aber der .gif-Support ist nicht legal, weil der Algorithmus patentiert wurde und die GD-Lib keine Lizenzgebühren an den Inhaber bezahlt (logisch, wer will das schon). Deshalb wundert`s mich, dass Dein Provider das Ding noch drauf hat. Ein weiterer Punkt, der gegen Ihn spricht...

        Ansonsten muß ich, wie mir hier schon der Tip gegeben wurde, mit Image:Size die Größe feststellen, im Script sozusagen "per Hand" maßstabsgerecht das Format herunterrechnen und in HTML dann die Datei auf das heruntergerechnete Format zerren. Sieht dann aber sicherlich auch sehr pixelig aus...

        Vergiss es lieber! Es gibt Browser, da sieht es quasi überhaupt nicht mehr aus ;-)

        Viele Grüsse
        Achim

        Vielen, vielen Dank!!!

        vieles vieles Bitte ;-)