Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] ImageCreateFromJPEG Alternative?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Hankman
    hat ein Thema erstellt [Erledigt] ImageCreateFromJPEG Alternative?.

    [Erledigt] ImageCreateFromJPEG Alternative?

    Hi Leute,

    ich habe jetzt wirklich lange gegoogelt und das Forum hier durchsucht.. leider ohne Lösung des Problems.

    ImageCreateFromJPEG überschreitet, wie bei so oft beschrieben, das Memory-Limit.
    Mir ist auch klar, woher das Problem kommt (Riesige Speichermenge, da das Bild intern als BMP umgerechnet wird). Nur finde ich leider nirgends eine Lösung. Ist es effektiv einfach nicht möglich mit GD Thumbnails von hochaufgelösten Fotos zu erstellen? Memory_Limit etc. habe ich per php.ini angepasst, aber die Seite liegt leider bei Strato mit nem normalen PowerPlus Paket, da bekommt der einzelne User nicht allzuviel ab =)

    ImageMagick wäre eine Lösung.. steht mir auf dem dämlichen Server aber nicht zu Verfügung :\ Würde monatlich 8€ mehr kosten, das ist es nicht wert...

    Hat vielleicht irgendwer ne Idee wie man mit "Standardmitteln" Thumbnails von Fotos jenseits der 5MP-Grenze erstellt?

    Bin für jede Hilfe dankbar,
    LG, Nico

    PS: Skript bricht bereits beim 1. Bild ab, liegt also nicht an "alten" Bildern im Speicher

  • Hankman
    antwortet
    So... Thema erledigt.

    Falls es mal irgendjemandem weiter hilft:

    Benutzt habe ich Version 2.1/ des Client Side Resize Skripts von adylevy.com.
    Hier muss leider die swf-Datei komplett neu kompiliert werden, sollte eine andere als die voreingestellte Bildgröße benötigt werden. (Bildgröße muss dazu in main.as und pane/imageStrip.as geändert werden)

    In Version 2.5 ist dies über eine XML-Datei möglich, leider habe ich diese Version nicht ans Laufen bekommen.. aber dieses Problem scheinen viele zu haben - Die Dateien werden nicht zum Server übertragen, die Kommentare auf der Seite bieten keine Lösung, die bei mir funktioniert hätte.

    Das Flash-Programm kommt auch mit sehr großen Bildern zurecht, außerdem können viele Dateien auf einmal hochgeladen werden.

    Abgelegt werden sie in unter /uploads/ im Skript-Ordner, von wo aus Sie mit PHP weiter verarbeitet werden können (z.B. in ne Datenbank, etc.)

    Danke für Eure Hilfe, hatte bis dato einfach nicht effektiv bei Google gesucht =)
    LG, Nico

    Einen Kommentar schreiben:


  • Hankman
    antwortet
    @halskrause: WO HAST DU DAS DENN HER???
    Google jetzt Ewigkeiten, leider erfolglos =) Wohl die falschen Suchbegriffe verwendet
    DANKE!

    Das Ding sollte eigentlich all meine Probleme lösen - die Bilder werden einfach vor dem Upload verkleinert, bei nem Bild mit der Breite 900 ein Thumbnail hat bisher keine Probleme gegeben =)

    Meld mich nochmal obs funktioniert hat!

    LG, Nico

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Ich kann zwar kein Flash, aber wenn ich dieses Problem hätte, würde ich mir jemanden Suchen, der mir sowas in Flash schreint schreibt.
    ...Oder: Free Client side image resize - flash cs4 - action script 3 filerefernce.data | Ady Levy
    Du kriegst sogar ne "rotafunktion" dazu. Wofür auch immer...

    Einen Kommentar schreiben:


  • Hankman
    antwortet
    Vermutlich wäre Photoshop "besser" geeignet, schließlich ist es das Grafikprogramm, daher wären die Ergebnisse wahrscheinlich auch besser. Wie's vom Speicher aussieht weiß ich natürlich nicht, keine Ahnung was PS intern mit dem Bildern macht.

    Die Bilder vor dem Upload verkleinern ist natürlich auch möglich, gibt auch zig Freeware-Programme die das ohne weiteres erledigen, hab ich auch schon nach geschaut

    Das Problem ist nur: Der Anwender ist mit dem Computer nur sehr Oberflächlich vertraut. Habe ihm eine Seite gebastelt, auf der er selbst Seiten erstellen kann, mit nem AJAX WYSISYG-Editor (CKedit, wirklich gut!) seine Seiten basteln kann, dazu halt noch Bilder hochladen kann (Geht um ne Präsentation von Kraftsporterfolgen, er selbst ist Trainer).

    Idee war halt: Er lädt eine Reihe von Bildern in ein Temporäres Verzeichnis auf der HP, dies wird per PHP ausgelesen, die Bilder verkleinert, umbenannt und mit Beschreib, etc. inner DB gespeichert. Nur leider scheitert es nun anscheinend an der Sache mit dem Verkleinern.

    Werde morgen bei Strato anrufen, vielleicht schalten Sie ja gegen einen kleinen Aufpreis ImageMagick frei... aber irgendwie glaub ich da nicht recht dran

    Also bleiben nur die beiden Möglichkeiten entweder das Paket zu vergrößern (bzw. den Anbieter zu wechseln) oder die Bilder vorher zu verkleinern?
    Suche nebenher noch nach anderen Workarounds.. leider recht erfolglos, solange man nix eigenes auf dem Server installieren kann... :\

    Zitat von fireweasel Beitrag anzeigen
    Leider habe ich derzeit genügend andere Freizeitbeschäftigungen.
    Ja, ist ja ganz klar =) Das ist ganz sicher auch ein größeres Projekt *g*

    Einen Kommentar schreiben:


  • fireweasel
    antwortet
    Zitat von halskrause Beitrag anzeigen
    Auch ich bedanke mich für die Antworten. Ist interesant zu wissen, wie gd arbeitet..
    Nein, nicht GD -- PHP ist der limitierende Faktor. Die LibGD-Wrapper in anderen Script-Sprachen (wie bspw. Lua) haben diese Einschränkungen nicht.

    Denkt ihr, dass Photoshop für massenumwandlungen eventuell besser geeignet wär als "gd"? Oder würde man die gleichen Speicherprobleme haben?
    Da Photoshop als externe Anwendung läuft, kann das Memory-Limit von PHP dem nichts anhaben. Ob es für Massenumwandlungen geeignet ist, entzieht sich meiner Kenntnis.

    Zitat von Hankman
    Der Ansatz das Bild in kleinere Bilder zu unterteilen hört sich vielversprechend an, aber ich glaube das übersteigt meine Kenntnisse - und es hört sich nicht so an, als hätte fireweasel da schon was passendes gefunden.
    Nein, das ist nur eine Idee, die ich beim Herumspielen mit den JPEG-Sources hatte (Das Stichwort ist "losless cropping"). Wie man das konkret in PHP machen kann, müsste ich erst noch ausprobieren. Leider habe ich derzeit genügend andere Freizeitbeschäftigungen.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Auch ich bedanke mich für die Antworten. Ist interesant zu wissen, wie gd arbeitet..

    Ne Frage: Da ich aus der Grafik komme, arbeite ich gern mit Photoshop. Natürlich ist mir klar, dass es nicht nativ auf Linux läuft... Eine alte 5er Lizenz kostet ca. 50€. Und man kann Photoshop (After Efects ebenfalls) super gut per Shell ansteuern. Zudem haben beide Programme eine eigentlich sehr gute Scripting Schnittstelle (JScript und VB), womit man weit mehr machen kann, als Bilder skalieren. Ich habe 1 Jahr lang, 3 mal am Tag, After Effects auf diesem Wege Wettervideos für einen Sender produzieren lassen. Der Inhalt kam dynamisch von PHP. Kein Absturz...

    Denkt ihr, dass Photoshop für massenumwandlungen eventuell besser geeignet wär als "gd"? Oder würde man die gleichen Speicherprobleme haben?

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Was spricht denn dagegen, die Bilder vor dem Upload zu verkleinern?

    Einen Kommentar schreiben:


  • Hankman
    antwortet
    Zitat von fireweasel Beitrag anzeigen
    Die zwei Klassiker sind:
    1. Erhöhe das Memory-Limit in der php.ini.
    2. Berechne den ungefähren Speicherplatzverbrauch[...]
    1. ist ja bereits (im Möglichen Rahmen) geschehen. 2. Löst würde ja nur verhindern, dass das Skript abbricht.

    Ich bin auch kein Freund von riesigen Bildern, etc.
    Aber leider muss ich mich ja dem User beugen - und der will natürlich gerne seine Fotos von der Digicam bequem hochladen :\

    Der Ansatz das Bild in kleinere Bilder zu unterteilen hört sich vielversprechend an, aber ich glaube das übersteigt meine Kenntnisse - und es hört sich nicht so an, als hätte fireweasel da schon was passendes gefunden.

    Ich habe sogar schon nach Flashprogrammen gesucht, die die Berechnung einfach Clientseitig durchführen, die Bilder aber auf dem Server speichern... aber leider auch nichts gefunden.

    Mich wundert, dass man nirgends eine praktikable Lösung findet - das Problem dürfen doch wirklich viele haben, eben weil die Auflösungen immer größer werden.

    LG, Nico

    Einen Kommentar schreiben:


  • fireweasel
    antwortet
    Zitat von nikosch Beitrag anzeigen
    Irgendwo ist immer eine Grenze. Der nächste will aus nem Frame einer 200MB Videodatei ein Thumbnail generieren. ...
    Das sollte auch mit PHP kein unlösbares Problem darstellen. Etwas Ähnliches hab ich vor einiger Zeit mal als Proof-of-Concept für MP4-Videos gebastelt. Das war nicht so "unperformant", wie viele vermuten würden.

    Man muss nur die Frame-"Bilddaten" in einem dekodierbaren Format vorliegen haben, also alles was die libGD frisst oder eben die unkomprimierten Pixeldaten (die kann man relativ leicht ins GD-Format wandeln).

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Irgendwo ist immer eine Grenze. Der nächste will aus nem Frame einer 200MB Videodatei ein Thumbnail generieren. Man darf sich auch fragen, ob heutiger Umgang mit Ressourcen sinnvoll ist, nur weil schnelle Upstreams und Megapixelauflösungen state of the art sind. Ich bekomme jedenfalls jedesmal die Krise, wenn mein Arbeitgeber mir eine 30MB Worddatei mit irgendwelchen Bildern drin per E-Mail schickt.

    Einen Kommentar schreiben:


  • fireweasel
    antwortet
    Zitat von Hankman Beitrag anzeigen
    ...
    ImageCreateFromJPEG überschreitet, wie bei so oft beschrieben, das Memory-Limit.
    Mir ist auch klar, woher das Problem kommt (Riesige Speichermenge, da das Bild intern als BMP umgerechnet wird). Nur finde ich leider nirgends eine Lösung.
    Die zwei Klassiker sind:

    1. Erhöhe das Memory-Limit in der php.ini.

    2. Berechne den ungefähren Speicherplatzverbrauch vor dem Aufruf von imageCreateFromJpeg() und brich selbst ab, wenn er das erlaubte Limit überschreitet. Diverse Ansätze dazu findest du in den Benutzerkommentaren zu den imageCreateFrom...()-Funktionen im PHP-Handbuch. Leider ist die Berechnung nur eine Schätzung, weil PHP das Memory-Management der LibGD übernimmt. Letzteres lässt sich genau berechnen, das von PHP nicht.

    Wahlweise könntest du noch darauf hoffen, dass der unsinnige Script-Abbruch endlich aus dem PHP-Quellcode der entsprechenden Funktionen entfernt wird und bei nicht ausreichendem Speicher einfach ein Fehlercode (bspw. das allseits beliebte FALSE) zurückgegeben wird.

    Ist es effektiv einfach nicht möglich mit GD Thumbnails von hochaufgelösten Fotos zu erstellen?
    Es gibt eine Möglichkeit, die dürfte ziemlich oft auch ohne LibGD funktioneren. Leider nicht ganz einfach zu realisieren und klappt nicht bei allen JPEG-Dateien.

    Rein theoretisch könnte man sogar aus sehr großen JPEG-Dateien Thumbnails bauen, indem man die Grafik stückweise verkleinert, ich habe aber noch niemanden gefunden, der mich dafür bezahlt, das mal in PHP umzusetzen. Ohne entsprechenden Antrieb setze ich mich aber nicht hin und studiere die libJPEG-7-Quellcodes ...

    Memory_Limit etc. habe ich per php.ini angepasst, aber die Seite liegt leider bei Strato mit nem normalen PowerPlus Paket, da bekommt der einzelne User nicht allzuviel ab =)
    Geiz ist geil ...

    Einen Kommentar schreiben:


  • Asipak
    antwortet
    Hallo,

    mit PHP wirst du da wohl wirklich nicht weit kommen: SELFHTML Forumsarchiv / 2006 / November / Probleme beim Verkleinern von Bildern

    Gruß

    Einen Kommentar schreiben:

Lädt...
X