ich stehe vor dem problem, dass meine benutzer häufig irgendwelche bilder aus digitalkameras hochladen werden, die natürlich recht groß sein können. leider hat auch unser hoster uns nicht unbegrenzt platz geschenkt, so dass ich die bilder schon beim hochladen in den medienpool gerne auf eine maximalgröße bringen würde.
wie macht man das denn am besten? als action? oder gibt es evtl schon eine fertige erweiterung, die das kann?
Hallo,
Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.
Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.
Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
- Jan.Kristinus
- Admin
- Beiträge: 2166
- Registriert: 24. Aug 2004, 22:11
- Wohnort: Frankfurt
- Kontaktdaten: ICQ Website
Hi,
es gibt einen Extension Point - MEDIA_ADDED.. An den kann man sich andocken und bekommt darüber die Informationen zur Datei.. D.h. ein AddOn bauen bei welchem dieser EP verwendet wird und die Datei wird nach dem hochladen resized.. Fertig gibt es das nicht.. Müsst Ihr leider selber ran. EInfach mal ein AddOn Demo holen (In der Demo oder im Wiki zu finden.) und dann schauen wie man den EP anspricht.. ist nur ein Funktionsaufruf. und dann resizen..
Klingt jetzt komplizierter als es ist .. EInfach mal loslegen und bei Problemen fragen ..
lg
jan
es gibt einen Extension Point - MEDIA_ADDED.. An den kann man sich andocken und bekommt darüber die Informationen zur Datei.. D.h. ein AddOn bauen bei welchem dieser EP verwendet wird und die Datei wird nach dem hochladen resized.. Fertig gibt es das nicht.. Müsst Ihr leider selber ran. EInfach mal ein AddOn Demo holen (In der Demo oder im Wiki zu finden.) und dann schauen wie man den EP anspricht.. ist nur ein Funktionsaufruf. und dann resizen..
Klingt jetzt komplizierter als es ist .. EInfach mal loslegen und bei Problemen fragen ..
lg
jan
Yakamara Media GmbH & Co. KG | Kaiserstrasse 69 | 60329 Frankfurt
Tel.: 069-900.20.60.30
http://www.yakamara.de/
Tel.: 069-900.20.60.30
http://www.yakamara.de/
- Markus.Staab
- Entwickler
- Beiträge: 9634
- Registriert: 29. Jan 2005, 15:50
- Wohnort: Aschaffenburg/Germany
- Kontaktdaten: ICQ Website
[räusper.] okay. sorry. für alle beteiligten nochmal das zitat:
der eigentliche call ist laut doku ja so:
in unserem fall wäre das also
seh ich das richtig? und wo kommen jetzt die parameter hin, wenn ich zB will, dass nur jpg-dateien betroffen sind?
hm. wie würde ich das im addon also aufrufen?REDAXO bietet durch eine Extension Point API die Möglichkeit, via Addon/Modul/Template direkt in den Workflow einzugreifen. Dies ist mit folgenden Funktionen möglich:
rex_register_extension_point
rex_register_extension
rex_is_registered_extension
Diese Extension Points kann man sich als Schnittstellen vorstellen, an denen man sich mit einer beliebigen Funktion einhaken kann. Jeder Extension Point hat unterschiedliche Parameter, die der eingehakten Funktion als Array übergeben werden.
---
Extension Point: MEDIA_ADDED
Dieser Extension Point wird aufgerufen, wenn im Medienpool ein Medium hinzugefügt wurde.
Folgende Parameter werden der Extension übergeben:
filename Dateiname
type MIME-Type
title Name des Medium im Pool
der eigentliche call ist laut doku ja so:
Code: Alles auswählen
rex_register_extension('OUTPUT_FILTER', 'rex_insert_special_urls');
Code: Alles auswählen
rex_register_extension('MEDIA_ADDED', 'neue_spezialfunktion_zum_resize');
- Markus.Staab
- Entwickler
- Beiträge: 9634
- Registriert: 29. Jan 2005, 15:50
- Wohnort: Aschaffenburg/Germany
- Kontaktdaten: ICQ Website
Hi,
dein Ansatz ist schonmal gut.
Nun wird also nachdem Hochladen eines Mediums die Funktion 'neue_spezialfunktion_zum_resize' aufgerufen.
Die Parameter, welche diese als Array übergeben bekommt, findest du hier dokumentiert:
http://www.redaxo.de/187-0-mediaadded.html
Was du nun mit diesen anstellst ist voll dir überlassen. Du musst jetzt hier also eine Funktion finden, die anhand der übergeben Daten das richtig Feld heraussucht (evtl mit OOMedia) und dann das ursprüngliche Bild resizen, bzw eine resizedte variante dessen anlegen.
Gruß,
Markus
dein Ansatz ist schonmal gut.
Nun wird also nachdem Hochladen eines Mediums die Funktion 'neue_spezialfunktion_zum_resize' aufgerufen.
Die Parameter, welche diese als Array übergeben bekommt, findest du hier dokumentiert:
http://www.redaxo.de/187-0-mediaadded.html
Was du nun mit diesen anstellst ist voll dir überlassen. Du musst jetzt hier also eine Funktion finden, die anhand der übergeben Daten das richtig Feld heraussucht (evtl mit OOMedia) und dann das ursprüngliche Bild resizen, bzw eine resizedte variante dessen anlegen.
Gruß,
Markus
-
- Beiträge: 29
- Registriert: 5. Jul 2006, 12:36
Hi!
Ich weiß, der Thread ist schon 2 Monate alt aber gibt es schon was neues bzgl. des autom. Rezise nach dem Upload von Bildern?
Meine Überlegung ist folgende:
Beim Upload muß gecheckt werden welche Art Typ die Datei ist. Ist sie ein Bild muß sie vorerst in einen Temp-Ordner z.B. unterhalb vom Files-Ordner abgelegt werden. Alle anderen Dateien werden gleich in den Files-Ordner kopiert.
Bei Bildern muß dann geschaut werden wie groß sie sind und beim überschreiten einer xbelibigen Breite z.B. 800px werden diese verkleinert ansonsten in den Files-Ordner verschoben.
Ist schon jemand soweit?
EDIT:
So ich hab mal den Medienpool bzw. die function saveMedia() etwas erweitert. Unterhalb vom Ordner "files" noch einen "temp" Ordner erstellen und in der config dies mit angeben. Zeile 455 - 474 des Medienpools hab ich wie folgt geändert:
Funktioniert soweit! Alles außer Jpegs werden normal hochgeladen. Jpegs werden in einem TEMP-Ordner abgelegt. Überschreitet die Bildgröße (800w bzw. 600h) dann wird es resampled, neu gespeichert und das alte gelöscht.
Hoffe das kann jemand gebrauchen!
Ich weiß, der Thread ist schon 2 Monate alt aber gibt es schon was neues bzgl. des autom. Rezise nach dem Upload von Bildern?
Meine Überlegung ist folgende:
Beim Upload muß gecheckt werden welche Art Typ die Datei ist. Ist sie ein Bild muß sie vorerst in einen Temp-Ordner z.B. unterhalb vom Files-Ordner abgelegt werden. Alle anderen Dateien werden gleich in den Files-Ordner kopiert.
Bei Bildern muß dann geschaut werden wie groß sie sind und beim überschreiten einer xbelibigen Breite z.B. 800px werden diese verkleinert ansonsten in den Files-Ordner verschoben.
Ist schon jemand soweit?
EDIT:
So ich hab mal den Medienpool bzw. die function saveMedia() etwas erweitert. Unterhalb vom Ordner "files" noch einen "temp" Ordner erstellen und in der config dies mit angeben. Zeile 455 - 474 des Medienpools hab ich wie folgt geändert:
Code: Alles auswählen
if($FILETYPE != "image/pjpeg") {
// ----- dateiupload
$upload = true;
$fileart = 1;
if(!@move_uploaded_file($FILE['tmp_name'],$REX['MEDIAFOLDER']."/$NFILENAME") ) {
if(!@copy($FILE['tmp_name'],$REX['MEDIAFOLDER']."/$NFILENAME")) {
$message .= "move file $FILENAME failed | ";
$ok = 0;
$upload = false;
}
}
} else {
// ----- dateiupload
$upload = true;
$fileart = 2;
if(!@move_uploaded_file($FILE['tmp_name'],$REX['MEDIAFOLDER_TEMP']."/$NFILENAME") ) {
if(!@copy($FILE['tmp_name'],$REX['MEDIAFOLDER_TEMP']."/$NFILENAME")) {
$message .= "move file $FILENAME failed | ";
$ok = 0;
$upload = false;
}
}
}
if($upload) {
if($fileart == "1") {
chmod($REX['MEDIAFOLDER']."/$NFILENAME", $REX['FILEPERM']);
// get widht height
$size = @getimagesize($REX['MEDIAFOLDER']."/$NFILENAME");
} else {
@chmod($REX['MEDIAFOLDER_TEMP']."/$NFILENAME", $REX['FILEPERM']);
// get widht height
$size = @getimagesize($REX['MEDIAFOLDER_TEMP']."/$NFILENAME");
// Breite größer Höhe?
if($size[0] > $size[1]) {
if($size[0] > "800") {
$tempImage = imagecreatefromjpeg($REX['MEDIAFOLDER_TEMP']."/$NFILENAME");
$ax = imagesx($tempImage);
$ay = imagesy($tempImage);
//neue Maße
$nx = "800";
$ny = ($nx/$ax)*$ay;
$newImage = imagecreatetruecolor($nx,$ny);
imagecopyresampled($newImage,$tempImage,0,0,0,0,$nx,$ny,$ax,$ay);
@imagejpeg($newImage,$REX['MEDIAFOLDER']."/$NFILENAME", 80);
@imagedestroy($tempImage);
@unlink($REX['MEDIAFOLDER_TEMP']."/$NFILENAME");
// neu berechnen
$size = @getimagesize($REX['MEDIAFOLDER']."/$NFILENAME");
$FILESIZE = @filesize($REX['MEDIAFOLDER']."/$NFILENAME");
} else {
@copy($REX['MEDIAFOLDER_TEMP']."/$NFILENAME",$REX['MEDIAFOLDER']."/$NFILENAME");
@unlink($REX['MEDIAFOLDER_TEMP']."/$NFILENAME");
}
} else {
if($size[0] > "600") {
$tempImage = imagecreatefromjpeg($REX['MEDIAFOLDER_TEMP']."/$NFILENAME");
$ax = imagesx($tempImage);
$ay = imagesy($tempImage);
//neue Maße
$ny = "600";
$nx = ($ny/$ay)*$ax;
$newImage = imagecreatetruecolor($nx,$ny);
imagecopyresampled($newImage,$tempImage,0,0,0,0,$nx,$ny,$ax,$ay);
@imagejpeg($newImage,$REX['MEDIAFOLDER']."/$NFILENAME", 80);
@imagedestroy($tempImage);
@unlink($REX['MEDIAFOLDER_TEMP']."/$NFILENAME");
// neu berechnen
$size = @getimagesize($REX['MEDIAFOLDER']."/$NFILENAME");
$FILESIZE = @filesize($REX['MEDIAFOLDER']."/$NFILENAME");
} else {
@copy($REX['MEDIAFOLDER_TEMP']."/$NFILENAME",$REX['MEDIAFOLDER']."/$NFILENAME");
@unlink($REX['MEDIAFOLDER_TEMP']."/$NFILENAME");
}
}
@chmod($REX['MEDIAFOLDER']."/$NFILENAME", $REX['FILEPERM']);
}
// hier geht es weiter mit der SQL-Datenbank
Hoffe das kann jemand gebrauchen!
wow, ein erster ansatz! danke schon mal!
das ganze müsste jetzt nur noch als action umgebaut werden, damit nicht im redaxo-core rumgehackt werden muss. die erweiterung soll ja auch das update auf 3.3. miterleben..
hat da jemand noch einen tipp, wie man da ansetzen kann? dann würde ich mal versuchen, das ganze in eine action zu übertragen..
das ganze müsste jetzt nur noch als action umgebaut werden, damit nicht im redaxo-core rumgehackt werden muss. die erweiterung soll ja auch das update auf 3.3. miterleben..
hat da jemand noch einen tipp, wie man da ansetzen kann? dann würde ich mal versuchen, das ganze in eine action zu übertragen..
-
- Beiträge: 29
- Registriert: 5. Jul 2006, 12:36
- Markus.Staab
- Entwickler
- Beiträge: 9634
- Registriert: 29. Jan 2005, 15:50
- Wohnort: Aschaffenburg/Germany
- Kontaktdaten: ICQ Website
habs jetzt noch nicht ausprobiert, aber habe der doku mal folgendes entnommen:
http://www.redaxo.de/194-0-rexregistere ... point.html
man bräuchte als vermutlicherweise den punkt "MEDIA_ADDED", an dem man die funktion "resize_on_upload" anhängt.
und wenn ich das richtig verstanden habe, definiere ich diese funktion dann im ADDON, richtig?
http://www.redaxo.de/194-0-rexregistere ... point.html
man bräuchte als vermutlicherweise den punkt "MEDIA_ADDED", an dem man die funktion "resize_on_upload" anhängt.
Code: Alles auswählen
rex_register_extension( 'MEDIA_ADDED','resize_on_upload');
- Markus.Staab
- Entwickler
- Beiträge: 9634
- Registriert: 29. Jan 2005, 15:50
- Wohnort: Aschaffenburg/Germany
- Kontaktdaten: ICQ Website
-
- Beiträge: 1711
- Registriert: 24. Nov 2005, 22:29
- Kontaktdaten: ICQ Website Yahoo Messenger
-
- Beiträge: 148
- Registriert: 1. Jul 2007, 13:27
- Wohnort: Hamburg / Berlin / Neubrandenburg
- Kontaktdaten: Website
Funktioniert nicht - Fehlermeldung
Habs probiert das Script von TheStranger zum laufen zu bringen. Allerdings hat es nicht funktioniert und eine fehlermeldung ausgeworfen.
Ich glaube das hängt mit folgendem zusammen:
Ich glaube das hängt mit folgendem zusammen:
wo ist die config und wie gebe ich das da an?Unterhalb vom Ordner "files" noch einen "temp" Ordner erstellen und in der config dies mit angeben
-
- Beiträge: 29
- Registriert: 5. Jul 2006, 12:36
Hi, habe Dir zwar per PN geantwortet aber ich sehe gerade das es hier noch nicht steht.
Mit config meine ich die "master.inc.php" unter redaxo/include.
Dort steht in Zeile 29 folgendes
$REX['MEDIAFOLDER'] = $REX['HTDOCS_PATH']."files";
nun einfach darunter folgendes einfügen und speichern
$REX['MEDIAFOLDER_TEMP'] = $REX['HTDOCS_PATH']."files/temp";
Dem Ordner auch Schreibrechte geben 755 oder 777, dann sollte es eigentlich funktionieren.
Mit config meine ich die "master.inc.php" unter redaxo/include.
Dort steht in Zeile 29 folgendes
$REX['MEDIAFOLDER'] = $REX['HTDOCS_PATH']."files";
nun einfach darunter folgendes einfügen und speichern
$REX['MEDIAFOLDER_TEMP'] = $REX['HTDOCS_PATH']."files/temp";
Dem Ordner auch Schreibrechte geben 755 oder 777, dann sollte es eigentlich funktionieren.
hat das schon mal jemand mit redaxo4 ausprobiert? wurde am medienpoll grundlegendes geändert?TheStranger hat geschrieben: So ich hab mal den Medienpool bzw. die function saveMedia() etwas erweitert. Unterhalb vom Ordner "files" noch einen "temp" Ordner erstellen und in der config dies mit angeben. Zeile 455 - 474 des Medienpools hab ich wie folgt geändert:
Code: Alles auswählen
if($FILETYPE != "image/pjpeg")
Hallo
Gibt es bezüglich Skalierung/Resize gleich beim Upload schon eine Lösung?
Dies ist ein Problem, welches immer wieder im Forum auftaucht -> warum Bilder nicht angezeigt werden.
Weiter fände ich es super, wenn es im Mediapool integriert wäre. Dies heisst, dass man per Checkbox auswählen kann, ob ein grosses Bild skaliert werden soll. Kleine Bilder müssen nicht skaliert werden.
Besten Dank für eine Antwort
Gruss
Christian
Gibt es bezüglich Skalierung/Resize gleich beim Upload schon eine Lösung?
Dies ist ein Problem, welches immer wieder im Forum auftaucht -> warum Bilder nicht angezeigt werden.
Weiter fände ich es super, wenn es im Mediapool integriert wäre. Dies heisst, dass man per Checkbox auswählen kann, ob ein grosses Bild skaliert werden soll. Kleine Bilder müssen nicht skaliert werden.
Besten Dank für eine Antwort
Gruss
Christian
Hallo,
D.h.: clientseitige Lösung, oder Hosting upgraden..
lg,
Jan
Kann es garnicht. Das Problem liegt serverseitig am maximalen RAM und der CPU bzw. script time.. daran kannst du nichts drehn, das sind fixe Parameter deines Hosters. Egal was du in Redaxo versuchst, es geschieht eben serverseitig, und somit gelten diese Grenzen.cmcave hat geschrieben: Gibt es bezüglich Skalierung/Resize gleich beim Upload schon eine Lösung?
D.h.: clientseitige Lösung, oder Hosting upgraden..
lg,
Jan
sicher? ich glaube, da kann man so einiges drehen.jeandeluxe hat geschrieben:Kann es garnicht. Das Problem liegt serverseitig am maximalen RAM und der CPU bzw. script time..cmcave hat geschrieben: Gibt es bezüglich Skalierung/Resize gleich beim Upload schon eine Lösung?
dass ein resize beim upload prinzipiell möglich ist, ist ja schon mal klar. beim resize-modul von R4 kann man doch sehr viel verstellen, unter anderem auch die uploadgröße. häufig wird die (zumindest in R3) nämlich durch das modul selbst beschränkt - wo man dort die maximale pixel-breite angeben kann, ist mir allerdings nicht klar.
Moin,
Sprich du kannst gerne dein memory_limit auf 128M setzen.. bekommen wirst du nur das was dir im Rahmen deines hosting-Pakets zugestanden wird.
lg,
Jan
Woran willst du drehen?cukabeka hat geschrieben:sicher? ich glaube, da kann man so einiges drehen.jeandeluxe hat geschrieben: Kann es garnicht. Das Problem liegt serverseitig am maximalen RAM und der CPU bzw. script time..
Definiere "beim upload".. du lädst eine Datei hoch - vorher ist sie auf deinem Rechner, danach auf dem Server.cukabeka hat geschrieben: dass ein resize beim upload prinzipiell möglich ist, ist ja schon mal klar.
Nicht das ich wüßte. Die Uploadgröße is im übrigen aber auch garnicht das Problem..cukabeka hat geschrieben: beim resize-modul von R4 kann man doch sehr viel verstellen, unter anderem auch die uploadgröße. häufig wird die (zumindest in R3) nämlich durch das modul selbst beschränkt
Nochmal: die Grenzen setzt dir dein Hoster, und normalerweise werden die auch strikt durchgesetzt. Wenn du versuchst per php.ini, oder im script Werte hochzusetzen, dann geht das eben nur in dem gesetzten Rahmen.cukabeka hat geschrieben: - wo man dort die maximale pixel-breite angeben kann, ist mir allerdings nicht klar.
Sprich du kannst gerne dein memory_limit auf 128M setzen.. bekommen wirst du nur das was dir im Rahmen deines hosting-Pakets zugestanden wird.
lg,
Jan
so, nochmal dieses thema.
ich weiß, dass das wordpress und andere CMS können, also sollte das redaxo auch können.
es ist ja unerheblich, wie viel MB die hoster erlauben. ich gehe von einer normalen digicam-JPG-datei aus. die hat maximal 2 MB. das schafft jeder hoster, der mir bisher untergekommen ist.
und jetzt bräuchte ich hilfe von addon-erfahrenen. wenn ich den medienpool mit einem addon erweitern will, wie gehe ich vor? ich will, dass das addon jedes mal, wenn ein JPG, GIF oder PNG hochgeladen wird, eine funktion aufgerufen wird. wie geht das?
ich hab mal bei multiple_uploader in die config.inc geschaut. da steht:
wie kann ich das als Grundlage für das auto-resize-addon nehmen? wie definiere ich den punkt nach dem upload, bei dem die funktion (ich denke hier an timthumb) das bild nimmt und auf eine maximalbreite/höhe bringt?
ich weiß, dass das wordpress und andere CMS können, also sollte das redaxo auch können.
es ist ja unerheblich, wie viel MB die hoster erlauben. ich gehe von einer normalen digicam-JPG-datei aus. die hat maximal 2 MB. das schafft jeder hoster, der mir bisher untergekommen ist.
und jetzt bräuchte ich hilfe von addon-erfahrenen. wenn ich den medienpool mit einem addon erweitern will, wie gehe ich vor? ich will, dass das addon jedes mal, wenn ein JPG, GIF oder PNG hochgeladen wird, eine funktion aufgerufen wird. wie geht das?
ich hab mal bei multiple_uploader in die config.inc geschaut. da steht:
Code: Alles auswählen
rex_register_extension('PAGE_MEDIAPOOL_MENU', 'rex_8614_insert');
if($REX["REDAXO"] == true) {
if (strcmp($_GET['page'], 'mediapool')==0){
if (isset($_GET['subpage'])) {
if (strcmp($_GET['subpage'], 'multiupload')==0) {
rex_register_extension('OUTPUT_FILTER', 'rex_8614_output');
}
}
}
}