BloodySword: Bilder verkleinern - Aber optimiert

Hallo,

ich möchte gerne die hochgeladenen Bilder Resourcensparend verkleindern. Bedeutet, dass ich nicht die PHP-Bordmittel, die ich bisher verwende nehmen möchte, da diese das komplette Bild dekomprimieren, eine 2. leere Leinwand erstellen und dadrauf das kleinere Bild zeichnen...

Ich möchte eine Library für PHP, die es auch unter Windows (XAMPP) sowie für Linux gibt und das Ganze etwas smarter anstellt:

Ein Bildblock laden, verkleinern, kodieren, speichern, nächstes Block bis zum Ende.

Würde viel weniger Speicher ziehen.

Es geht dabei nur um JPG und PNG. GIF und BMP sowie PSD blocke ich, weil PSD zu aufwendig ist, BMP viel zu groß für ein Upload ist und GIF sowieso tot ist...

Liebe Grüße.

  1. Hi!

    Ich möchte eine Library für PHP, die es auch unter Windows (XAMPP) sowie für Linux gibt und das Ganze etwas smarter anstellt:

    Was stört Dich denn ab den bestehenden? Wenn Du diese zuwenig 'smart' findest: schreibe Dir selbst eine!

    Ein Bildblock laden, verkleinern, kodieren, speichern, nächstes Block bis zum Ende.

    Würde viel weniger Speicher ziehen.

    Magst Du Deine obigen Sätze begründen wollen?

    Es geht dabei nur um JPG und PNG. GIF und BMP sowie PSD blocke ich, weil PSD zu aufwendig ist, BMP viel zu groß für ein Upload ist und GIF sowieso tot ist...

    Es lebe die Plattiüde

    • ich werd' müde!

    off:PP

    --
    "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
    1. Es geht dabei nur um JPG und PNG. GIF und BMP sowie PSD blocke ich, weil PSD zu aufwendig ist, BMP viel zu groß für ein Upload ist und GIF sowieso tot ist...

      Es lebe die Plattiüde

      Ich verstehe den Zusammenhang nicht - obenstehendes sagt doch sehr viel über den Autor aus ;)

      1. Hi!

        Es geht dabei nur um JPG und PNG. GIF und BMP sowie PSD blocke ich, weil PSD zu aufwendig ist, BMP viel zu groß für ein Upload ist und GIF sowieso tot ist...

        Es lebe die Plattiüde

        Ich verstehe den Zusammenhang nicht - obenstehendes sagt doch sehr viel über den Autor aus ;)

        Mußt Du denn hier alles verraten?

        off:PP

        --
        "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
      2. Hi suit_!

        Mir fällt gerade[*] auf, dass am Ende
        Deines Nicks ein underscore steht -
        bist Du am selbigen gar ein anderer?

        off:PP

        [*]Ja: Farbe war ursächlich hierbei!

        --
        "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
        1. bist Du am selbigen gar ein anderer?

          Nein, das war schon ich - nur nicht eingeloggt (Fernsehrechner) zu faul zum Einloggen :)

          1. Hi!

            bist Du am selbigen gar ein anderer?

            Nein, das war schon ich - nur nicht eingeloggt (Fernsehrechner) zu faul zum Einloggen :)

            Da bin ich aber froh, dass niemand meinen "transdanubischen Freund" zu imitieren versucht;)

            off:PP

            --
            "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
          2. 'ǝɯɐu$ ıɥ

            bist Du am selbigen gar ein anderer?

            Nein, das war schon ich - nur nicht eingeloggt (Fernsehrechner) zu faul zum Einloggen :)

            es sei dir verziehen, wo doch stargate lief ;-)

            ssnɹƃ
            ʍopɐɥs

            --
            Answers: $1, Short: $5, Correct: $25, dumb looks are still free ...
            1. es sei dir verziehen, wo doch stargate lief ;-)

              Ich hoffe es ist mir auch verziehen, dass ich mich weigere Stargate in deutscher Sprache zu schauen :p

  2. Hi,

    ich möchte gerne die hochgeladenen Bilder Resourcensparend verkleindern. Bedeutet, dass ich nicht die PHP-Bordmittel, die ich bisher verwende nehmen möchte, da diese das komplette Bild dekomprimieren, eine 2. leere Leinwand erstellen und dadrauf das kleinere Bild zeichnen...

    Die GD-Lib ist nicht das Optimum, das stimmt.

    Ich möchte eine Library für PHP, die es auch unter Windows (XAMPP) sowie für Linux gibt

    ImageMagick lässt sich von PHP aus ansprechen.

    Ein Bildblock laden, verkleinern, kodieren, speichern, nächstes Block bis zum Ende.

    Das allerdings ist nicht besonders sinnvoll.

    MfG ChrisB

    --
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
    1. Hi!

      ich möchte gerne die hochgeladenen Bilder Resourcensparend verkleindern. Bedeutet, dass ich nicht die PHP-Bordmittel, die ich bisher verwende nehmen möchte, da diese das komplette Bild dekomprimieren, eine 2. leere Leinwand erstellen und dadrauf das kleinere Bild zeichnen...

      Die GD-Lib ist nicht das Optimum, das stimmt.

      Davon schrieb OP aber nix!

      Ich möchte eine Library für PHP, die es auch unter Windows (XAMPP) sowie für Linux gibt

      ImageMagick lässt sich von PHP aus ansprechen.

      Ja - und auch andere.

      off:PP

      --
      "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
      1. Die GD-Lib ist nicht das Optimum, das stimmt.

        Davon schrieb OP aber nix!

        Bist du dir sicher? Ich hab mich darüber beklagt, dass diese Methode viel zu viel RAM zieht.

        Ich möchte eine Library für PHP, die es auch unter Windows (XAMPP) sowie für Linux gibt

        ImageMagick lässt sich von PHP aus ansprechen.

        Ja - und auch andere.

        Und welche davon ist die Resourcensparendste? ;)

        1. Hi!

          Bist du dir sicher?

          Ja, Du schriebst von 'PHP-Bordmitteln' -> diese sind nicht auf die GDLib beschränkt!

          Ich hab mich darüber beklagt, dass diese Methode viel zu viel RAM zieht.

          Ich möchte eine Library für PHP, die es auch unter Windows (XAMPP) sowie für Linux gibt

          ImageMagick lässt sich von PHP aus ansprechen.

          Ja - und auch andere.

          Und welche davon ist die Resourcensparendste? ;)

          Probiere es aus - ich müßte jetzt dasselbe tun;) ChrisB riet zu
          Imagick - wie ich ihn einschätze hat er das nicht grundlos getan.

          off:PP

          --
          "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
          1. Hi!

            Die Beschreibung auf http://de.php.net/manual/de/class.imagick.php -
            ist ziemlich dürftig - auf http://www.user-archiv.de/php-imagick.html gibt es mehr Infos und weitere Links zum Thema.

            off:PP

            --
            "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
            1. Ich hab grad mit biegen und brechen (Tausende Inkompatibelitäten mit meiner PHP-Version, der wollte sogar den gleichen Compiler haben usw. VC6 und VB9 mochten sich nicht, Threadsafe-Unterschiede usw.) geschafft Imagick zu installieren.

              Ich hoffe es ist unter Linux nicht auch so schwer?

              Das Problem ist heute, dass die Digicams mittlerweile immer höhere Auflösungen unterstützten. Es wäre da schon sehr hilfreich, wenn der Server damit klar kommen würde, diese zu verkleinern, ohne dass ich das Script-Memory-Limit erhöhen muss. Und das bei 12 Megapixeln! Wäre das möglich?

              Ein 12 Megapixel-Bild braucht gut 34 MB im RAM, unkomprimiert. Wenn die Speicherverwaltung von ImageMagick gut durchdacht ist, sollte er mit 64 MB doch auskommen inkl. dem Script?

              1. Natürlich braucht ein 12 Megapixel Bild nicht gut 34 MB, sondern eher knapp 103 MB. Bin nebenbei was am machen, hab das gerade falsch berechnet.

                1. Natürlich braucht ein 12 Megapixel Bild nicht gut 34 MB, sondern eher knapp 103 MB. Bin nebenbei was am machen, hab das gerade falsch berechnet.

                  Unsinn! Tut mir Leid, ich war nur eben auf Klo und mein Tischnachbar will mich wohl ärgern. >.<

                  (4096 * 2928 * 3) / 1024² = 34,3125 MB
                  Jetzt kann mich keiner mehr aufhalten xD.

                  1. Hallo,

                    Natürlich braucht ein 12 Megapixel Bild nicht gut 34 MB, sondern eher knapp 103 MB. Bin nebenbei was am machen, hab das gerade falsch berechnet.
                    (4096 * 2928 * 3) / 1024² = 34,3125 MB
                    Jetzt kann mich keiner mehr aufhalten xD.

                    24-Bit-RGB-Bilder mit Alphakanal oder ein Bild im CMYK-Format, ganz besonders in Kombination mit einem Alphakanal können das sehr wohl.

                    http://forum.de.selfhtml.org/archiv/2010/3/t195923/, folge dem Link von Dibo: http://www.cix-blog.de/PHP-GDlib-und-der-Speicherbedarf-169-2008.html

                    Freundliche Grüße

                    Vinzenz

                    1. Das Hochladen von 24 Bit + Alpha ist nicht erlaubt. Jede PNG wird überprüft und es wird ein Fehler ausgegeben, wenn RGBA erkannt wurde. Ganz einfach aus dem Grund, da der Hintergrund nach dem Verkleinern und in JPG speichern schwarz werden wird. Das ist für Fotos oder Zeichnungen nicht gerade Empfehlenswert ;).

                      Das uploadlimit liegt bei 8 MB, so kann es unmöglich ein derart großes CYMK-Bild geben, was alles sprengen würde.

              2. Hi!

                Das Problem ist heute, dass die Digicams mittlerweile immer höhere Auflösungen unterstützten. Es wäre da schon sehr hilfreich, wenn der Server damit klar kommen würde, diese zu verkleinern, ohne dass ich das Script-Memory-Limit erhöhen muss. Und das bei 12 Megapixeln! Wäre das möglich?

                Darum geht es also! Ja die Kameras unterstützen seit einigen Jahren Wahnsinnsauflösungen (> 8 MP[*])  damit man auch Riesenposter für Litfaßsäulen  in sehr guter Qualität erzeugen kann.

                Laß mich raten: Du hast keinen Einfluß auf die Bilder, weil $user diese hochlädt und es ihr|ihm egal ist, welche MP-Monster da übertragen werden.

                Wenn dem nicht so ist, würde ich dazu raten, die Bilder vor einem Upload bereits auf erträgliche Pixelmasse zu reduzieren - 1+X-Megapixel-Bilder bracuht man (zur Anzeige im UA) nicht - bei Bedarf kann man ja höhere Auflösungen (für Print etc.) zum Download anbieten.

                Ich lasse mich da gerne belehren, aber ich kenne aktuell keine Möglichkeit, große Bilder zu skalieren ohne  irgendwann den 'tatsächlichen' (gegenüber der komprimierten Datei) Speicherbedarf zu benötigen.

                off:P'nur max. 10MP nutzend'P

                [*] Meiner Meinung nach reichen auch 6 Megapixel locker aus für ein gutes Digitalbild - vorausgesetzt, die /wichtigeren Parameter/ der Kameraoptik stimmen - gegen die Megapixelomanie der Marketingstrategen kommt man kaum an!

                --
                "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
                1. Genau das ist es!

                  Der Benutzer soll sich um nichts kümmern brauchen. Usability schreibe ich GROß! So sollte es auch sein. Meine Webpräsenz will ja, dass die Bilder kleiner sind, nicht der User, dem ist das doch egal! Der User will nur 2 Klicks machen, auf Upload klicken, ein Fortschritt sehen und wenn fertig das Bild in der Galerie betrachen können. Nicht aber erst GIMP herunterladen, ein Tutorial lesen, das Bild selber verkleinern.

                  Das Uploadlimit pro Bild liegt bei 8 MB um auch PNG-Dateien zu ermöglichen. (Es gibt ja Kameras, die heute sogar PNG können.) Normalerweise reichen bei JPG auch 3 Mb; jedoch sollen nicht nur Fotos sondern auch Scans (Zeichnungen, Skizzen etc.) hochladbar sein. Deshalb 8 MB.

                  Dieser, der dieses Tutorial geschrieben hat, hat wohl den Schuss nicht gehört. Ähm, wozu gibt es die PHP-Library??? Kein Bock gehabt die zu installieren und lieber auf die unsichere Art gehen und EXE-Dateien ausführen? exec(); - DIE PHP-Todsünde:

                  http://www.theukwebdesigncompany.com/articles/php-imagemagick.php

                  Leider finde ich kein gutes Beispiel für das Resizen. Auch nicht mit deinem Link, das führt mich immer wieder zu php.net.

                  http://de3.php.net/manual/de/function.imagick-resampleimage.php

                  Okay, das ist schon etwas brauchbares. Aber wie erstellt man aus ein X-Beliebiges Dateiformat an Bildern ein Imagick-Objekt?

                  http://de3.php.net/manual/de/function.imagick-resizeimage.php

                  Die Filterliste ist richtig nett. Welcher Filter ist der beste vergleichen in Bildqualität (auch beim Vergrößern, falls das Bild nicht groß genug ist um in die Anzeige zu passen) und in Sachen Geschwindigkeit und Ressourcen-Ersparnis?

                  imagick::FILTER_POINT
                  imagick::FILTER_BOX
                  imagick::FILTER_TRIANGLE
                  imagick::FILTER_HERMITE
                  imagick::FILTER_HANNING
                  imagick::FILTER_HAMMING
                  imagick::FILTER_BLACKMAN
                  imagick::FILTER_GAUSSIAN
                  imagick::FILTER_QUADRATIC
                  imagick::FILTER_CUBIC
                  imagick::FILTER_CATROM
                  imagick::FILTER_MITCHELL
                  imagick::FILTER_LANCZOS
                  imagick::FILTER_BESSEL
                  imagick::FILTER_SINC

                  Ich vermisse imagick::FILTER_LINEAR. Ist das eventuell imagick::FILTER_QUADRATIC?

                  BiLinear sollte doch ausreichen, oder? LANCZOS nehme ich allerdings sehr gerne, ist aber sehr Rechenintensiv.

                  1. Hi!

                    Genau das ist es!

                    Der Benutzer soll sich um nichts kümmern brauchen. Usability schreibe ich GROß! So sollte es auch sein. Meine Webpräsenz will ja, dass die Bilder kleiner sind, nicht der User, dem ist das doch egal! Der User will nur 2 Klicks machen, auf Upload klicken, ein Fortschritt sehen und wenn fertig das Bild in der Galerie betrachen können. Nicht aber erst GIMP herunterladen, ein Tutorial lesen, das Bild selber verkleinern.

                    Ok! Das verstehe ich und es ist auch lobenswert, aber:

                    Das Uploadlimit pro Bild liegt bei 8 MB um auch PNG-Dateien zu ermöglichen. (Es gibt ja Kameras, die heute sogar PNG können.) Normalerweise reichen bei JPG auch 3 Mb; jedoch sollen nicht nur Fotos sondern auch Scans (Zeichnungen, Skizzen etc.) hochladbar sein. Deshalb 8 MB.

                    ein komprimertes 8 MB-Bild, kann dekomprimiert verdammt groß werden!

                    Okay, das ist schon etwas brauchbares. Aber wie erstellt man aus ein X-Beliebiges Dateiformat an Bildern ein Imagick-Objekt?

                    Via Imagick::__construct - ich weiß, Imagick ist auf php.net sehr schlecht dokumentiert.

                    http://de3.php.net/manual/de/function.imagick-resizeimage.php

                    Die Filterliste ist richtig nett. Welcher Filter ist der beste vergleichen in Bildqualität (auch beim Vergrößern, falls das Bild nicht groß genug ist um in die Anzeige zu passen) und in Sachen Geschwindigkeit und Ressourcen-Ersparnis?

                    Das hängt aber stark vom Originalbild ab - sorry ich habe schon seit mehr als einem Jahr keine EBV mit PHP mehr gemacht.

                    Ich vermisse imagick::FILTER_LINEAR. Ist das eventuell imagick::FILTER_QUADRATIC?

                    Zu Filtern mit Imagick habe ich hier noch etwas gefunden: http://www.rubblewebs.co.uk/imagemagick/examples/filter.php

                    BiLinear sollte doch ausreichen, oder? LANCZOS nehme ich allerdings sehr gerne, ist aber sehr Rechenintensiv.

                    Oft hilft nur testen - eventuell hilft Dir auch die Imagemagick-Projektsite weiter...

                    off:PP

                    --
                    "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
                    1. Okay. Jetzt komme ich zurecht. Das sollte ich hinbekommen.

                      Am Effektivsten wäre es immernoch, dass die Bilder auf dem PC des Benutzers verkleinert werden.

                      Am Besten sollte es ein Flash- oder JAVA-Uploader sein, der keine wirkliche GUI hat.

                      Sprich der User klickt nur auf "Hunzufügen..." um der Upload-Schlange ein Bild hinzuzufügen. Nach dem er alle ausgewählt hat, soll jedes Bild zunächst verkleinert werden:

                      Ist das Bild größer als 5000x5000 Pixel (25 Megapixel sollten für die Zukunft ersteinmal ausreichen, hoffe ich), soll es auf diese verkleinert werden. Ist es kleiner, wird es so belassen und nur in JPEG mit 85% Qualität umgewandelt. Es soll dann noch ein zweites Bild erstellt werden, ein 128x128-Thumbnail. Diese Bilder sollen dann alle hochgeladen werden. Ist dies erfolgreich, wird jedes Bild in einer MEMORY-Tabelle eingetragen,womit der Benutzer in einer weiterführenden Page in der Fancybox Schoneinmal für das Anzeigen erforderliche Daten eintragen kann (Name, Beschreibung). Dann werden die Bilder in die Galeriedatenbank eingetragen und die die aus der MEMORY-Tabelle entfernt.

                      Kennt jemand von euch ein solches Applet? Wenn nicht, ist es leicht so etwas mit JAVA zu schreiben? Gibt es eine kostenlose, leichtgewichtige JAVA-IDE, die mit Sun's ... eh... ich meine Oracle's JAVA JDK/JRE kompatibel ist? Bitte nicht Netbeans, das ist sowas von schwer und träge, selbst auf einem Core 2 Duo.

                      Eine grobe Anleitung wie man mit JAVA Bilder verkleinert in einem Browser-Applet, wäre dann auch hilfreich ^^.

                      1. Hi!

                        Okay. Jetzt komme ich zurecht. Das sollte ich hinbekommen.

                        Das ist gut - berichte doch bitte wieder, wenn Du fertig bist!
                        Du kannst auch gerne einen Artikel für das brandneue Selfwiki zum Thema schreiben - ich denke, dass Imagick für viele interessant sein wird;)

                        Am Effektivsten wäre es immernoch, dass die Bilder auf dem PC des Benutzers verkleinert werden.

                        Das ist richtig, deshalb fragte ich danach - aber Deine Einwand war korrekt, denn $Zielgruppe Deines Projektes kenne ich nicht und kann diese somit nicht einschätzen.

                        Am Besten sollte es ein Flash- oder JAVA-Uploader sein, der keine wirkliche GUI hat.

                        Mhm - Flash ohne GUI? Und: wurde Java nicht deshalb gebaut, um plattformneutral GUIs zu gestalten? Ja ich bin nicht so der große Java-Freund und meide diese Kaffesorte, wo es möglich ist. Es gibt nur einen Grund für mich, Java zu benutzen - wegen der weltbesten IDE!

                        Sprich der User klickt nur auf "Hunzufügen..." um der Upload-Schlange ein Bild hinzuzufügen. Nach dem er alle ausgewählt hat, soll jedes Bild zunächst verkleinert werden:
                        Ist das Bild größer als 5000x5000 Pixel (25 Megapixel sollten für die Zukunft ersteinmal ausreichen, hoffe ich)

                        Bestimmt, wobei ich mich frage, wer als $Otto-Normal-User quadratische Bilder schießt;)

                        Kennt jemand von euch ein solches Applet? Wenn nicht, ist es leicht so etwas mit JAVA zu schreiben? Gibt es eine kostenlose, leichtgewichtige JAVA-IDE, die mit Sun's ... eh... ich meine Oracle's

                        Ja, (leider?) das ist so - vielleicht schafft Oracle es, uns von dieser Plage zu befreien...

                        JAVA JDK/JRE kompatibel ist? Bitte nicht Netbeans, das ist sowas von schwer und träge, selbst auf einem Core 2 Duo.

                        Eclipse - ja standardkonfiguriert ist das auch träge - sonst Nix. Ich habe hier ein fünf Jahre altes Toshiba-Satellite-Notebook und will keine andere IDE als Eclipse.  Und das ist der _einzige_ Grund, warum eine JRE auf meinem Rechner ist!

                        off:PP

                        --
                        "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
                        1. Hi!

                          Okay. Jetzt komme ich zurecht. Das sollte ich hinbekommen.

                          Das ist gut - berichte doch bitte wieder, wenn Du fertig bist!
                          Du kannst auch gerne einen Artikel für das brandneue Selfwiki zum Thema schreiben - ich denke, dass Imagick für viele interessant sein wird;)

                          Das kann ich machen. Ich werde es später ausführlich austesten. Auch die auslastung berechnen, die auftritt wenn 10 User große Bilder hochladen. Wobei die meisten sowieso wohl kleinere hochladen werden. Viele stellen die Kamera auf 2 Megapixel herunter, um mehr Bilder speichern zu können. Durchaus sinnvoll. Alles über 6 Megapixel ist Overkill. Bei einem guten Obejktiv reichen auch 4 vollkomen aus. Es sei denn, man will ein Din A0000-Poster drucken. Und ich denke, das wird sich nichtmal ein Manager leisten wollen.

                          Am Effektivsten wäre es immernoch, dass die Bilder auf dem PC des Benutzers verkleinert werden.

                          Das ist richtig, deshalb fragte ich danach - aber Deine Einwand war korrekt, denn $Zielgruppe Deines Projektes kenne ich nicht und kann diese somit nicht einschätzen.

                          $Zielgruppe = (array) $Alle;

                          Am Besten sollte es ein Flash- oder JAVA-Uploader sein, der keine wirkliche GUI hat.

                          Mhm - Flash ohne GUI? Und: wurde Java nicht deshalb gebaut, um plattformneutral GUIs zu gestalten? Ja ich bin nicht so der große Java-Freund und meide diese Kaffesorte, wo es möglich ist. Es gibt nur einen Grund für mich, Java zu benutzen - wegen der weltbesten IDE!

                          Flash: Button erlaubt.
                          JAVA: Normaler Browser <button></button>.

                          Sprich der User klickt nur auf "Hunzufügen..." um der Upload-Schlange ein Bild hinzuzufügen. Nach dem er alle ausgewählt hat, soll jedes Bild zunächst verkleinert werden:
                          Ist das Bild größer als 5000x5000 Pixel (25 Megapixel sollten für die Zukunft ersteinmal ausreichen, hoffe ich)

                          Bestimmt, wobei ich mich frage, wer als $Otto-Normal-User quadratische Bilder schießt;)

                          Ich nahm es als selbstverständlich an, dass damit nur ein Maximum gemeint ist und natürlich das Seitenverhältnis beibehalten wird ;).

                          Kennt jemand von euch ein solches Applet? Wenn nicht, ist es leicht so etwas mit JAVA zu schreiben? Gibt es eine kostenlose, leichtgewichtige JAVA-IDE, die mit Sun's ... eh... ich meine Oracle's

                          Ja, (leider?) das ist so - vielleicht schafft Oracle es, uns von dieser Plage zu befreien...

                          JAVA JDK/JRE kompatibel ist? Bitte nicht Netbeans, das ist sowas von schwer und träge, selbst auf einem Core 2 Duo.

                          Eclipse - ja standardkonfiguriert ist das auch träge - sonst Nix. Ich habe hier ein fünf Jahre altes Toshiba-Satellite-Notebook und will keine andere IDE als Eclipse.  Und das ist der _einzige_ Grund, warum eine JRE auf meinem Rechner ist!

                          Eclipse also. Okay, dann warte ich bis nach Feierabend, denn ich lad hier sicher keine ~100 MB irgendwo runter.

                          Du meinst wohl die JDK, da ist die JRE ja auch mit drin. Ohne JDK allerdings wird dich Eclipse ausmeckern, wieso du keine JDK installiert hast.

                          Kann man auch ohne IDE, sprich mit Notepad++ auch Applets schreiben und diese dann als JAR kompilieren? Im JDK müsste doch so ein compiler dabei sein, richtig?

                          Die Fenster kann ich auch mit reinem Code designern, auch wenn's ne qual ist. Aber gleiches tut man doch auch mit XHTML, CSS und JS. Also für mich ist das kein großes Problem.

                          Java wird für mich auch nicht schwer sein. Wenn man Grundkenntnisse im Programmieren hat, kann man ruck zuck JEDE Programmiersprache erlernen.

                          Ich finde bei Google leider nichts: 'creating java applets without IDE'.

                          1. Hi!

                            Das ist gut - berichte doch bitte wieder, wenn Du fertig bist!
                            Du kannst auch gerne einen Artikel für das brandneue Selfwiki zum Thema schreiben - ich denke, dass Imagick für viele interessant sein wird;)

                            Das kann ich machen. Ich werde es später ausführlich austesten. Auch die auslastung berechnen, die auftritt wenn 10 User große Bilder hochladen. Wobei die meisten sowieso wohl kleinere hochladen werden. Viele stellen die Kamera auf 2 Megapixel herunter, um mehr Bilder speichern zu können. Durchaus sinnvoll.

                            Ja!

                            Alles über 6 Megapixel ist Overkill. Bei einem guten Obejktiv reichen auch 4 vollkomen aus.

                            Sagte ich doch - Spezialanwendungen wie z.B: Digitale Photogrammetrie  mal ausgenommen - aber da braucht man eh (digitales) Mittelformat und mehr als 36 MP!

                            Es sei denn, man will ein Din A0000-Poster drucken.

                            Genau!

                            Mhm - Flash ohne GUI? Und: wurde Java nicht deshalb gebaut, um plattformneutral GUIs zu gestalten? Ja ich bin nicht so der große Java-Freund und meide diese Kaffesorte, wo es möglich ist. Es gibt nur einen Grund für mich, Java zu benutzen - wegen der weltbesten IDE!

                            Flash: Button erlaubt.
                            JAVA: Normaler Browser <button></button>.

                            Ok - das habe ich nun verstanden!

                            Sprich der User klickt nur auf "Hunzufügen..." um der Upload-Schlange ein Bild hinzuzufügen. Nach dem er alle ausgewählt hat, soll jedes Bild zunächst verkleinert werden:
                            Ist das Bild größer als 5000x5000 Pixel (25 Megapixel sollten für die Zukunft ersteinmal ausreichen, hoffe ich)

                            Bestimmt, wobei ich mich frage, wer als $Otto-Normal-User quadratische Bilder schießt;)

                            Ich nahm es als selbstverständlich an, dass damit nur ein Maximum gemeint ist und natürlich das Seitenverhältnis beibehalten wird ;).

                            Ok!

                            Eclipse - ja standardkonfiguriert ist das auch träge - sonst Nix. Ich habe hier ein fünf Jahre altes Toshiba-Satellite-Notebook und will keine andere IDE als Eclipse.  Und das ist der _einzige_ Grund, warum eine JRE auf meinem Rechner ist!
                            Eclipse also. Okay, dann warte ich bis nach Feierabend, denn ich lad hier sicher keine ~100 MB irgendwo runter.

                            Du meinst wohl die JDK,

                            Nein: JRE!

                            da ist die JRE ja auch mit drin.

                            Natürlich!

                            Ohne JDK allerdings wird dich Eclipse ausmeckern, wieso du keine JDK installiert hast.

                            Nein - höchstens, wenn ich in Java entwickeln will, aber auch da kann man andere Wege gehen, als Suns - Äh Ja: Oracles JDK zu verwenden.

                            Kann man auch ohne IDE, sprich mit Notepad++ auch Applets schreiben und diese dann als JAR kompilieren? Im JDK müsste doch so ein compiler dabei sein, richtig?

                            Im JDK ja, natürlich!

                            Ich finde bei Google leider nichts: 'creating java applets without IDE'.

                            Lass doch mal 'without IDE' weg;)

                            off:PP

                            --
                            "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
                            1. http://java.sun.com/docs/books/tutorial/uiswing/components/index.html

                              Das ist mal ein Tutorial. Damit kann man was anfangen. Leider ist dort auch nicht erklärt, wie man am Ende eine JAR-Datei erstellt.

                              Aber so sollte es mir möglich sein, ein Java-Fenster anzuzeigen, wo man die bilder auswählen kann und (am Besten alle zusammen gezippt) hochladen kann.

                              Kann man ein Unsichtbares Applet machen, wo ich ein ButtonClick mit JavaScript erzwingen kann oder muss ich ein Applet-Button basteln um das Fenster anzuzeigen?

                              1. Hi!

                                http://java.sun.com/docs/books/tutorial/uiswing/components/index.html

                                Das ist mal ein Tutorial. Damit kann man was anfangen. Leider ist dort auch nicht erklärt, wie man am Ende eine JAR-Datei erstellt.

                                Wenn ich nicht total irre, dann ist das ein Zip-Archiv mit Extension jar;)
                                Das ganze geht mit dem jar-Kommando in der Shell ganz einfach http://java.sun.com/developer/Books/javaprogramming/JAR/basics/build.html

                                Kann man ein Unsichtbares Applet machen, wo ich ein ButtonClick mit JavaScript erzwingen kann oder muss ich ein Applet-Button basteln um das Fenster anzuzeigen?

                                Mhm Du bist nun echt auf dem Applet-Trip? Ich denke heutzutage haben weit mehr Menschen Javascript aktiv und ein Flash-Plug-In, als eine JRE für den Browser.

                                off:PP

                                --
                                "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
                                1. Ich wüsste nicht, dass es mit purem JS auf JEDEM Browser möglich wäre Bilddateien zu resizen.

                                  Jeder, der Communities besucht, wird Java installiert haben.

                                  Flash ohne Adobe Flash (was scheiße Teuer ist) zu erstellen, was auch lauffähig ist, dürfte wohl nicht so einfach werden. Gnash läuft ja nichtmal richtig, wie soll es dann mit Open Source möglich sein Flash-Applets zu schreiben? Adobe Flash ist mir eindeutig zu teuer.

                                  1. Hi!

                                    Ich wüsste nicht, dass es mit purem JS auf JEDEM Browser möglich wäre Bilddateien zu resizen.

                                    Nein - es ging mir um die Verbreitung der Unterstützung zur Ausführung von Java-Applets und Flash im Browser;)

                                    Jeder, der Communities besucht, wird Java installiert haben.

                                    Sorry, das bezweifle ich!

                                    Flash ohne Adobe Flash (was scheiße Teuer ist)

                                    Ansichtssache - da kenne ich Lizensen, die wesentlich mehr kosten.

                                    zu erstellen, was auch lauffähig ist, dürfte wohl nicht so einfach werden. Gnash läuft ja nichtmal richtig, wie soll es dann mit Open Source möglich sein Flash-Applets zu schreiben? Adobe Flash ist mir eindeutig zu teuer.

                                    Wie gesagt: es ging mir um die Verbreitung der notwendigen Plug-Ins, auch wenn ich Deinen Ansatz, die Arbeit bestmöglich auf die Clients zu verlagern gut finde - letzlich entscheidet die Akzeptanz von $User!

                                    off:PP

                                    --
                                    "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
                                    1. Viele Communities benutzen heute noch Java Applets an bestimmten Stellen oder ganz und gar (nicht nur Knuddels.de).

                                      Jetzt am Wochenende werde ich mich ausführlich mit Image Magick beschäftigen. Ich hoffe das Ding läuft auf Vista und 7, sonst kann ichs knicken.

                                      Ausführliche Tests mit der Serverauslastung sind außerdem geplant.

                2. @@Peter Pan:

                  nuqneH

                  Ja die Kameras unterstützen seit einigen Jahren Wahnsinnsauflösungen (> 8 MP[*])  damit man auch Riesenposter für Litfaßsäulen  in sehr guter Qualität erzeugen kann.

                  Das Gerücht, dass Wahnsinnsauflösungen zwangsläufig zu sehr guter Qualität führen, hält sich auch schon seit einigen Jahren. Es wird aber nicht wahr, auch wenn Kamerahersteller und -verkäufer einen das glauben machen wollen.

                  Was das Objektiv nicht hergibt, kann der Sensor nicht rausholen.

                  Und wenn erhöhte Pixelzahl auf gleicher Sensorfläche zu höherem Bildrauschen führt, hat man auch nichts an Qualität gewonnen; u.U. sogar eingebüßt.

                  Qapla'

                  --
                  Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                  (Mark Twain)
                  1. Hi!

                    Ja die Kameras unterstützen seit einigen Jahren Wahnsinnsauflösungen (> 8 MP[*])  damit man auch Riesenposter für Litfaßsäulen  in sehr guter Qualität erzeugen kann.

                    Das Gerücht, dass Wahnsinnsauflösungen zwangsläufig zu sehr guter Qualität führen, hält sich auch schon seit einigen Jahren. Es wird aber nicht wahr, auch wenn Kamerahersteller und -verkäufer einen das glauben machen wollen.

                    Es kann sogar dazu führen, dass die Qualität deutlich schlechter wird - es gibt erst wenige DSLRs, die einen Sensor verbaut haben, der so groß ist, wie es zuvor im Kleinbildbereich üblich war. Und wo kein Licht hinkommt, da müssen Interpolationsalgorithmen 'raten' - das gelingt nicht immer gut!

                    Was das Objektiv nicht hergibt, kann der Sensor nicht rausholen.

                    Richtig, das u.a. meinte ich mit Kameraoptik;)

                    Und wenn erhöhte Pixelzahl auf gleicher Sensorfläche zu höherem Bildrauschen führt, hat man auch nichts an Qualität gewonnen; u.U. sogar eingebüßt.

                    Das ist so - niemand braucht 20 MP für Urlaubsfotos;)

                    Anders sieht es natürlich aus, wenn digitale Bilder (oder Bewegtbilder aka Videos) zur technisch-wissenschaftlichen Analyse benutzt werden (Medizintechnik, Schadenskartierung in der Architektur, Aerophotogrammetrie etc.) - aber da braucht man mindestens Mittelformat - heute natürlich digital und mit 56 MP aufwärts - bei Satellitenbildern haben wir nochmal eine andere Dimension -  aber das ist ein anderes Thema;)

                    off:PP

            2. Moin!

              Die Beschreibung auf http://de.php.net/manual/de/class.imagick.php -
              ist ziemlich dürftig - auf http://www.user-archiv.de/php-imagick.html gibt es mehr Infos und weitere Links zum Thema.

              Also, die PHP-Extension für ImageMagick hat, zumindest sofern man vor hat, PNGs zu speichern, einen ziemlich nervigen, hässlichen Bug (in PHP 5.2.6, Debian Lenny): Die PNGs werden als 16Bit/Pixel gespeichert, mit Alphakanal. Es sind also 64 Bits/Pixel gespeichert, und das kostet heftig viel überflüssigen Speicherplatz.

              Man kann auch nichts dagegen unternehmen, indem man die Farbtiefe vorm Speichern setzt.

              Ich löse das Problem derzeit durch einen nachträglichen exec()-Aufruf con convert, der die Farbtiefe entsprechend reduziert.

              - Sven Rautenberg

              1. Hi Sven!

                Die Beschreibung auf http://de.php.net/manual/de/class.imagick.php -
                ist ziemlich dürftig - auf http://www.user-archiv.de/php-imagick.html gibt es mehr Infos und weitere Links zum Thema.

                Also, die PHP-Extension für ImageMagick hat, zumindest sofern man vor hat, PNGs zu speichern, einen ziemlich nervigen, hässlichen Bug (in PHP 5.2.6, Debian Lenny): Die PNGs werden als 16Bit/Pixel gespeichert, mit Alphakanal. Es sind also 64 Bits/Pixel gespeichert, und das kostet heftig viel überflüssigen Speicherplatz.

                Argh: 64 Bits/Pixel - das braucht man sicher nicht zur Darstellung, wohl aber zur Interpretation, z.B. in der medizinischen Diagnostik u.a.!
                Ich hatte die Verwendung von Imag(emag)ick nicht selbst empfohlen, sondern nur eine solche in Erinnerung gerufen!

                Man kann auch nichts dagegen unternehmen, indem man die Farbtiefe vorm Speichern setzt.

                :(

                Ich löse das Problem derzeit durch einen nachträglichen exec()-Aufruf con convert, der die Farbtiefe entsprechend reduziert.

                Der Hinweis wird OP sicher helfen  - ich selbst nutze aktuell kein PHP zur Bildverarbeitung.

                off:PP

                --
                "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
    2. ImageMagick lässt sich von PHP aus ansprechen.

      Braucht diese lib weniger RAM beim verkleinern als die GD-Lib? Freeware (GPL)?

      Ein Bildblock laden, verkleinern, kodieren, speichern, nächstes Block bis zum Ende.

      Das allerdings ist nicht besonders sinnvoll.

      Warum ist das nicht sinnvoll? Es ist eher nicht sinnvoll, die ganzen Billdaten in den RAM zu laden, wenn es auf einem Server ausgeführt wird, wo tausende User on sein könnten.

      1. [...]
        Warum ist das nicht sinnvoll? Es ist eher nicht sinnvoll, die ganzen Billdaten in den RAM zu laden, wenn es auf einem Server ausgeführt wird, wo tausende User on sein könnten.

        Weil viele Algorithmen das gesamte Bild betrachten, und die Verkleinerung sich nicht nur auf einen bestimmten Bildausschnitt bezieht, sondern nur wirksam ist, wenn das gesamte Bild verkleinert wird. Dein Ergebnis bei einer Komprimierung verschiedener, einzelner Bildteile wird nicht so komprimiert sein, wie die Komprimierung des gesamten Bildes.

        Peter

        1. Demnach kann ich das komplett vergessen. Dann brauche ich ein JAVA-Applet, welches ich mit JavaScript steuern kann und die Bilder vor dem Hochladen verkleinert und sie dann selber hochlädt. Ist das möglich?

          Oder ist Imagick Ressourcensparender als die PHP-Bordmittel?

          1. [...] Dann brauche ich ein JAVA-Applet, welches ich mit JavaScript steuern kann und die Bilder vor dem Hochladen verkleinert und sie dann selber hochlädt. Ist das möglich?

            Meine Applet-Zeiten sind schon ein wenig her, aber für Filezugriff auf dem Client wirst Du das Applet signieren müssen und der Anwender muss Deinem Zertifikat vertrauen. Ansonsten spielt Dein Applet nur in der Sandbox.

            Ich an Deiner Stelle würde allerdings wirklich den User in seiner Möglichkeit beschränken, Bilder beliebiger Größe hochzuladen. Und dann spricht auch nichts gegen eine Weiterverarbeitung auf dem Server.

            Schöne Grüße,

            Peter

      2. Moin!

        Ein Bildblock laden, verkleinern, kodieren, speichern, nächstes Block bis zum Ende.

        Das allerdings ist nicht besonders sinnvoll.

        Warum ist das nicht sinnvoll? Es ist eher nicht sinnvoll, die ganzen Billdaten in den RAM zu laden, wenn es auf einem Server ausgeführt wird, wo tausende User on sein könnten.

        Wenn du einen extrem gut besuchten Server hast, und als Unteraufgabe hochgeladene Bilder verkleinern willst, und dies nicht parallel von vielen Usern gleichzeitig synchron geschehen darf, solltest du dich mit dem Thema asynchrone Abarbeitung von Aufgaben auseinandersetzen.

        Minimum wäre, einen Cronjob aufzusetzen, der periodisch prüft, ob mittlerweile wieder neue hochgeladene Bilder verkleinert werden müssen, und das dann ressourcenschonender seriell erledigt (als parallel synchron für jeden User direkt).

        Vielleicht wäre es auch angebracht, eine entsprechende Task-Queue zu nutzen, beispielsweise Gearman. Das spart dir relativ viel Aufwand für die eigenständige Verwaltung der Tasks.

        - Sven Rautenberg

  3. @@BloodySword:

    nuqneH

    und GIF sowieso tot ist...

    Da hab ich wohl die Traueranzeige verpasst. Oder die Meldung ist eine Ente.

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
    1. Nun ja, wer will Fotos oder Zeichnungen schon im GIF-Format hochladen? Am Ende soll eh alles in JPG umgewandelt werden. GIF-Dateien sieht man allerdings nur noch extrem selten.

      1. @@BloodySword:

        nuqneH

        Nun ja, wer will Fotos oder Zeichnungen schon im GIF-Format hochladen?

        Fotos? Vermutlich niemand. Zeichnungen? Warum denn dicht?

        Am Ende soll eh alles in JPG umgewandelt werden.

        Das ist Unsinn. Informiere dich, für welche Arten von Grafiken JPEG völlig ungeeignet ist: [GIF-JPEG, GRAFIKFORMAT]

        Und BTW, das Grafikformat heißt JPEG, nicht JPG.

        Qapla'

        --
        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
        (Mark Twain)
        1. Hallo Gunnar,

          zwei Erbsen, um Dir einen Gunnar™ zu ersparen :-)

          Nun ja, wer will Fotos oder Zeichnungen schon im GIF-Format hochladen?
          Fotos? Vermutlich niemand. Zeichnungen? Warum denn dicht?

          Ich verkaufe Dir gerne ein "n"

          Am Ende soll eh alles in JPG umgewandelt werden.
          Das ist Unsinn. Informiere dich, für welche Arten von Grafiken JPEG völlig ungeeignet ist: [GIF-JPEG

          und biete Kleines für Großes: [GIF-JPEG] …

          Freundliche Grüße

          Vinzenz

          1. @@Vinzenz Mai:

            nuqneH

            Ich verkaufe Dir gerne ein "n"

            Was soll’s denn kosten?

            und biete Kleines für Großes: [GIF-JPEG] …

            Déjà-vu

            Qapla'

            --
            Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
            (Mark Twain)