Druckversion des Themas

Hier klicken um das Topic im Orginalformat anzusehen

Forum Sefrengo.org _ Hacks/ Sonstiges _ Dateimanager: Upload Resize

Geschrieben von: paulinsche Thu. 30. April 2009, 10:02

Große Bilder können mit dem Hack per Upload auf einen vorgegebenen Pixelwert verkleinert werden. Kleinere Bilder als Vorgabe sind davon nicht berührt. Zudem wird mit dem Upload auch der Dateiname komplett kleingeschrieben und Sonderzeichen und Umlaute entfernt.

Bei mir läuft's prima. Lediglich mit transparenten png-Daten scheint es nicht so zurechtzukommen. So hab ich das einfach auskommentiert. Näheres siehe unten. Benutzung auf eigene Gefahr.

In den Ordner backend/inc/ die Dateien "mod.upl_resize.php" und "inc.upl.php" reinladen bzw. letztere überschreiben.
Ebenso im Ordner "backend/tpl/standard/" die Datei "filelist.tpl" überschreiben.

Bei der Datei "inc.upl.php" sind am Ende der Datei die letzten paar Zeilen ab dem Kommentar hinzugefügt worden.

QUELLTEXT
// Upload Resize and Rename
// by Felix Praschak - www.inallermunde.de - web@inallermunde.de
include('mod.upl_resize.php');

Datei "filelist.tpl"
Zeile 59: Pfadanpassung an das Projekt verzeichnis (wenn nicht im ROOT) mod_upl_resize.php
QUELLTEXT
//write relative path to file
$img = '../media/'.$fm->get_directory_name($folder_kompl).$file_path;

Zeilen 110 bis 112 hinzugefügt. Hier kann man die gewünschte Dateigröße festlegen (value = x).
QUELLTEXT
<!--BEGIN RESIZING-->
                        Gr&ouml;&szlig;e: <input name="newpicsize" type="text" value="600" size="5" maxlength="4" />
<!--END RESIZING-->

In der Datei "mod.upl_resize.php" ganz am Schluß kann man angeben, für welches Dateiformat die Größenänderung angewandt werden soll. Im Moment ist nur JPG aktiviert, GIF und PNG ist auskommentiert.

Datei "mod.upl_resize.php"
Zeile 20:
QUELLTEXT
//set picture quality (0 - 100), default: 80
$quality = 80;

Davelee hat angemerkt, dass bei ihm zu große Bilder (3072x2304) eine Fehlermeldung bringen.
Wenn ich noch was anmerken soll, einfach melden.

 upload_resize.zip ( 13.53KB ) : 43


Gruß
Rainer

Geschrieben von: saschapi Thu. 30. April 2009, 11:14

Danke! smile.gif

Geschrieben von: Taturo Tue. 19. May 2009, 16:09

Hallo Rainer,
bei mir werden die Bilder auf 5x5 Pixel verkleinert. Habe an deinen Dateien nichts geändert.

Sefrengo Version 01.04.03

Gruss,
Andreas

Geschrieben von: davelee Wed. 20. May 2009, 12:31

ZITAT(Taturo @ Tue. 19. May 2009, 17:09) *
Hallo Rainer,
bei mir werden die Bilder auf 5x5 Pixel verkleinert. Habe an deinen Dateien nichts geändert.

Sefrengo Version 01.04.03

Gruss,
Andreas


Hi taturo, ich hatte das gleich Problem
mit http://forum.sefrengo.org/index.php?s=&showtopic=2512&view=findpost&p=18346 hat es dann aber funktioniert


Geschrieben von: tsunami Mon. 15. June 2009, 16:28

Hallo !
Der Hack funktioniert bei mir einwandfrei. Habe nur ein Problem im Backend, dass ich extrem (horizontal) scrollen muss.


Kann man die Breite des Textfeldes "Grösse" nicht kleiner machen, dass man auch die Bearbeiten-Icons im Viewport
hat ?

Gruss Tsunami

Geschrieben von: davelee Mon. 15. June 2009, 17:36

Dürfte normalerweise nicht so breit sein da länge mit size="5" angegeben ist
Welchen browser verwendest du ?

Geschrieben von: tsunami Mon. 15. June 2009, 18:06

Den FF 3.0.11

Habs auch kurz mal im IE7/IE8 getestet - dasselbe....leider

Geschrieben von: davelee Mon. 15. June 2009, 18:40

Vieleicht hängt es ja mit deinem vorigen Beitrag zusammen (Formularfelder formatieren)

Was sagt denn die developer toolbar ? ansonsten einfach eine CSS Eigenschaft hinzufügen

Geschrieben von: tsunami Tue. 16. June 2009, 07:39

Ist nicht auf der gleichen Installation wie die Geschichte mit den Formularfeldern.

Hatte bei meiner Installation auf welcher ich den Upload-Hack teste aber noch SF 1.4.1 im Einsatz. Habe nun auf 1.4.3 geupdatet. Und jetzt funktioniert es einwandfrei mit der Darstellung des Textfeldes. Bedeutend kleiner als vorher wink.gif

Geschrieben von: silwue Tue. 7. July 2009, 11:08

Hallo zusammen

Der Resize klappt bei mir ebenfalls toll! Danke viel Mals. Hatte das schon länger gesucht!

Ich hatte ebenfalls diese Fehlermeldung bei sehr grossen Bildern. Da wir aber unsere eigener Provider sind, haben wir die Memory_limit in PHP von 32 auf 64 MB erhöht. Nun klappt auch dieser grosse Upload!

Grüsse
Silvan

Geschrieben von: toto Wed. 8. July 2009, 07:46

Tach zusammen,

hab die Dateien ausgetauscht, aber bei mir passiert rein gar nix. ich hab da nix mit resize stehen??? Muß ich cache löschen oder ähnliches??

gruß toto

Geschrieben von: silwue Thu. 9. July 2009, 09:09

ZITAT(toto @ Wed. 8. July 2009, 08:46) *
Tach zusammen,

hab die Dateien ausgetauscht, aber bei mir passiert rein gar nix. ich hab da nix mit resize stehen??? Muß ich cache löschen oder ähnliches??

gruß toto


Hallo toto

Ich musste auch noch die Anpassungen gem. http://forum.sefrengo.org/index.php?s=&showtopic=2512&view=findpost&p=18346 machen. Dann klappte es super.

Grüsse
Silvan

Geschrieben von: tsunami Fri. 10. July 2009, 06:47

Hätte noch ein Frage zu dem Feld (Grösse) wo ja die voreingestellte Grösse steht z.b. 600 (600px). Möchte ich jetzt aber mal doch ein Originalbild hochladen geht dies nicht. Habe mal das Feld
leer gelassen und ein Bild hochgeladen...die Grösse beträgt dann 5x3px. Wäre gut wenn man auch die Option hätte das Originalbild hochzuladen.
Oder geht dies bei euch ? Natürlich via SF-Dateimanager und nicht FTP.

Gruss Tsunami

Geschrieben von: paulinsche Fri. 10. July 2009, 07:16

Gib dann doch einfach in das Feld die max. Pixelgröße ein, also in diesem Fall die Originalgröße…

Geschrieben von: tsunami Wed. 15. July 2009, 06:45

Hallo

Danke für die Info !

Habe noch folgendes festgestellt. Wenn ich im Dateimanager das gleiche Bild (1877x1447/502KB) in einer tieferen "Verschachtelung" z.b.

ab Basisverzeichnis.....dateien/04_angebote/angebote/

ablegen bzw. uploaden möchte, bekomme ich diese Fehlermeldung:

ZITAT
Warning: getimagesize(../media/dateien/04_angebote/angebote/Unwetter-307_0737-bearbeitet.jpg): failed to open stream: No such file or directory in /home/www/web200/html/backend/inc/mod.upl_resize.php on line 79
Das Bildformat wird leider nicht unterstüzt. Nur JPEG, GIF und PNG.

wenn ich das gleiche auf

dateien/04_angebote/

uploaden möchte, funktioniert es !

Sobald ich also 3 Unterordner in der Struktur habe, schlägt der Upload fehl....An was kann es liegen ?

Gruss Tsunami

Geschrieben von: paulinsche Wed. 15. July 2009, 07:09

Hallo Tsunami,

kann ich leider nicht nachvollziehen. Ich bin grad 6 Ebenen tief gegangen ohne jegliche Fehlermeldung.
Vielleicht musst du den "refresh"-Wert in Zeile 88 etwas höher setzen? Nur eine vage Vermutung, bin kein Programmierer…

Geschrieben von: tsunami Wed. 15. July 2009, 08:50

Habe ich versucht - nützte leider nichts.
Ich habe nun in einem anderen Ordner (Dateimanager) testhalber eine neue Ebene erstellt. In diese habe ich das gleiche Bild nochmals hochgeladen. Der Upload funktionierte...mal geht's mal nicht.
Danach löschte ich das Bild zuerst und wollte nachher den Ordner löschen. Dann bekomme ich aber die Meldung:

ZITAT
Verzeichnis konnte nicht gelöscht werden!


Dies hängt denke ich auch mit den geänderten Dateien betreffend "Upload Resize" zusammen...oder wieso lässt sich dieser einfach nicht löschen ? Es befindet sich ja nichts mehr in diesem Ordner...

Geschrieben von: silwue Mon. 20. July 2009, 15:37

ZITAT(tsunami @ Wed. 15. July 2009, 09:50) *
Habe ich versucht - nützte leider nichts.
Ich habe nun in einem anderen Ordner (Dateimanager) testhalber eine neue Ebene erstellt. In diese habe ich das gleiche Bild nochmals hochgeladen. Der Upload funktionierte...mal geht's mal nicht.
Danach löschte ich das Bild zuerst und wollte nachher den Ordner löschen. Dann bekomme ich aber die Meldung:



Dies hängt denke ich auch mit den geänderten Dateien betreffend "Upload Resize" zusammen...oder wieso lässt sich dieser einfach nicht löschen ? Es befindet sich ja nichts mehr in diesem Ordner...


Hallo
Das hängt sicher mit dem Owner zusammen. Wenn der Ordner mit Sefrengo erstellt wurde (php) kann es bei manchen Provider sein, dass es einen anderen Owner bekommen hat. Dann kann man Ordner mit FTP nicht mehr löschen.

Ich schätze auch, dass ein so neu erstellter Ordner nicht die nötigen Rechte hat (777) - darum der Fehlschlag.

Hoffe das Hilfe....
Grüsse
swu

Geschrieben von: toto Tue. 11. August 2009, 13:40

bei mir kommt das im Dateimanager und darunter die Fileliste.

QUELLTEXT
get_parent_directories($iddirectory=$_POST['iddirectory'], $idclient); $folder = $_POST['iddirectory']; //get file-IDs of selected Directory $db_dir = $fm->get_files_in_directory($folder, $client); while($db_dir->next_record()) { $idfile_dir = $db_dir->f('idupl'); $folderscan = $folderscan.'//'.$idfile_dir; } $folderarray = explode ('//',$folderscan); //sort file-IDs to extract the latest file-ID function sortiere($m, $n) { if ($m == $n) return 0; return ($m < $n) ? 1 : -1; } usort($folderarray, sortiere); //get filename of uploaded file, delete special characters (german) $file_path = $_FILES['userfile']['name']['0']; $file_path = preg_replace('/[^ a-zA-Z0-9._]/', '#', $file_path); $file_path = str_replace('##','-',$file_path); $file_path = str_replace(' ','-',$file_path); $file_path = str_replace('#','-',$file_path); //write relative path to file $img = '../media/'.$fm->get_directory_name($folder_kompl).$file_path; //generate lower case file name $img_kl = strtolower($file_path); //set path for reloading $uri = $_SERVER['PHP_SELF'].'?area=upl&viewtype=compact&idexpand='.$folder_kompl; //get new picture size - min. 5px if($_POST['newpicsize']<5){ $maxsize = 5; } else{ $maxsize = $_POST['newpicsize']; } //get actual picture information $imagesize = getimagesize($img); $hoehe = $imagesize[1]; $breite = $imagesize[0]; $typ = $imagesize[2]; //check if jpeg,gif or png - if not die if(($typ != 1)&&($typ != 2)&&($typ != 3)){ echo "Das Bildformat wird leider nicht unterstüzt. Nur JPEG, GIF und PNG."; header("refresh:4;url=$uri"); die(); } //if width is longer side - rezise if($hoehe < $breite){     $ratio = $hoehe / $breite; if($breite < $maxsize){ $hoehe_n = $hoehe; $breite_n = $breite; } else{ $hoehe_n = $maxsize * $ratio; $breite_n = $maxsize; }} //if height is longer side - rezise else{     $ratio = $breite / $hoehe; if($hoehe < $maxsize){ $hoehe_n = $hoehe; $breite_n = $breite; } else{ $hoehe_n = $maxsize; $breite_n = $maxsize * $ratio; } } //overwrite existing, original sized image /* //save as GIF if ($typ == 1) { $src = imagecreatefromgif($img); $dest = imagecreatetruecolor($breite_n,$hoehe_n); imagecopyresampled($dest,$src,0,0,0,0,$breite_n,$hoehe_n,$breite,$hoehe); imagegif($dest,$img,$quality); } */ //save as JPEG if ($typ == 2) { $src = imagecreatefromjpeg($img); $dest = imagecreatetruecolor($breite_n,$hoehe_n); imagecopyresampled($dest,$src,0,0,0,0,$breite_n,$hoehe_n,$breite,$hoehe); imagejpeg($dest,$img,$quality); } /* //save asPNG if ($typ == 3) { $src = imagecreatefrompng($img); $dest = imagecreatetruecolor($breite_n,$hoehe_n); imagecopyresampled($dest,$src,0,0,0,0,$breite_n,$hoehe_n,$breite,$hoehe); imagepng($dest,$img,$quality); } */ //file name to lower case $fm->rename_file_fs( $idupl = $folderarray[0], $img_kl ); //update file and reload page $fm->update_file($idupl = $folderarray[0],$idclient,$filename = $img_kl,$directory,$filetype,$status,$description,$used); header("refresh:0;url=$uri"); } /****************************************************************************** End of PICTURE RESIZE ******************************************************************************/ ?>

Unterstützt von Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)