Unterschiedliche Bildgrößen auf "Anfrage"..., per ModRewrite werden Bilder neu berechnet und gecached! |
Willkommen, Gast ( Anmelden | Registrierung ) [ Hilfe | Mitglieder | Suche ]
Unterschiedliche Bildgrößen auf "Anfrage"..., per ModRewrite werden Bilder neu berechnet und gecached! |
Sun. 3. December 2006, 23:06
Beitrag
#1
|
|
Advanced Member Gruppe: Moderators Beiträge: 911 Mitglied seit: 26.06.2006 Wohnort: Essen; Ruhrgebiet Mitglieds-Nr.: 4 |
So, während ich nach einem ImageEditor gesucht habe bin ich auf folgenden Codeschnippsel gestoßen.
ACHTUNG! Der Hack ist übelst und sollte nicht in einem Produktivsystem eingesetzt werden. Vermutlich sind große Sicherheitslücken drin. Es geht hier erstmal nur ums Anschauen und Rumspielen! Worum geht es überhaupt? Ich hatte immer das Problem, dass meine Redakteure Bilder hochladen, die möglicherweise nicht die korrekte Größe haben. Vor allem bei Galerien wurde da gerne mal direkt aus Digitalkameras reinkopiert. Nun wird ja das Sefrengo Thumbnail direkt erstellt, dass ist also da. Dummerweise brauche ich öfter aber auch passende Bilder in Groß oder in ganz anderen Größen. Manchmal auch ein und das selbe Bild in 3-4 Größen. Lösung In dem anghängten Zipfile befindet sich eine htaccess datei und eine image.php. Durch die modifizierte Sefrengo htaccess Datei wird ein Bild auch mit anderen Adressen erreichbar: Orginal: http://www.domain.de/media/images/testbild.jpg Zusätzlich: http://www.domain.de/media/images/small/testbild.jpg http://www.domain.de/media/images/medium/testbild.jpg http://www.domain.de/media/images/large/testbild.jpg Per ModRewrite wird das ganze dann auf die image.php umgeleitet. Diese erstellt Bilder in der gewünschten, Voreingestellten Größe. Das Bild wird sogar gecached und in ein cache verzeichnis geschrieben. Bei erneutem Aufruf wird getestet ob das Bild schon erstellt wurde und ob sich das Orginal verändert hatte seit dem. Wen nicht wird das Bild aus dem Cache genommen. Damit kann ich jetzt super Module schrauben, indem ich zum Beispiel anstelle des Orginals gleich die Größe nutze, die ich an der STelle haben will. So kann der Redakteur dann ein Bild auswählen und sollte es zu groß sein, wird es runter gerechnet. Installation
- Testen und vor allem Sicherheitslücken klären. Stelle mir vor, dass ich durch die Übergabe von $path und $image große Scheunentore aufgemacht habe! - Besser an Sefrengo anbinden und konfigurierbar machen - Bildgrößen konfiguration flexibeler machen und aus der htaccess datei holen und ganz wichtig: - Feedback von Euch einholen!!!! So, was sagt ihr dazu? Das ersetzt meines Erachtens nicht einen guten Dateimanager im Backend, der das komfortable Bearbeiten von Bildern ermöglicht (min. Drehen, Beschneiden und Skalieren), hilft aber schon mal bei vielen Problemen! Freu mich auf Feedback. imagecache.zip ( 1.71KB ) Anzahl der Downloads: 26 -------------------- |
|
|
Thu. 21. February 2008, 12:15
Beitrag
#21
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 170 Mitglied seit: 15.05.2007 Mitglieds-Nr.: 908 |
@saschapi
Ich habe gerade deine Resize funktion ausprobiert, jedoch habe ich damit meine Probleme wenn ich im Root verzeichniss die vorhandene .htaccess Datei um folgenden Code erweitere: QUELLTEXT RewriteBase / # scaling small, medium, large RewriteRule (.*)small/([A-Za-z0-9]+).(jpg|gif|png)$ image.php?max_width=100&path=$1&image=$2.$3 RewriteRule (.*)medium/([A-Za-z0-9]+).(jpg|gif|png)$ image.php?max_width=200&path=$1&image=$2.$3 RewriteRule (.*)large/([A-Za-z0-9]+).(jpg|gif|png)$ image.php?max_width=300&path=$1&image=$2.$3 funktioniert die REWRITE funktion unter SF nicht mehr. Hast du vieleicht einen Rat für mein Problem ? (Hab auch versucht die .htaccess Datei zu mit deiner zuerstetzen jedoch funktioniert dies auch nicht) LG David Der Beitrag wurde von davelee bearbeitet: Thu. 21. February 2008, 12:16 |
|
|
Thu. 21. February 2008, 13:12
Beitrag
#22
|
|
Advanced Member Gruppe: Moderators Beiträge: 911 Mitglied seit: 26.06.2006 Wohnort: Essen; Ruhrgebiet Mitglieds-Nr.: 4 |
Vermute du hast das Projekt nicht im Root? Versuch mal die Rewrite-Base an dein Projekt anzupassen (z.B. /projekt01/) Mehr weiß ich aber auch nicht!
-------------------- |
|
|
Thu. 21. February 2008, 16:40
Beitrag
#23
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 170 Mitglied seit: 15.05.2007 Mitglieds-Nr.: 908 |
Danke dir das war das Problem - ich habe fälschlicher weise angenommen das ich die angabe relativ zum htaccess-Dokument anzugeben ist.
Jedoch funktioniert das script noch immer nicht- wegen was auch immer |
|
|
Fri. 22. February 2008, 09:03
Beitrag
#24
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 170 Mitglied seit: 15.05.2007 Mitglieds-Nr.: 908 |
Ich bin jetzt draufgekommen was mein Problem war.
Das Script funktioniert nicht wenn der Dateiname wie folgt aufgebaut ist: 02.22.mein_Bild.JPG Die Änderung in der htaccess Datei: QUELLTEXT von ([A-Za-z0-9]+).(jpg|gif|png) auf ([A-Za-z0-9._-]+).(jpg|gif|png|JPG|GIF|PNG) Update: In der Image.php habe ich QUELLTEXT imagecopyresized auf imagecopyresampled geändert da die saschapi-thumbnails etwa aufgepixelt dargestellt wurden. @saschapi Nochmals Danke für diesen Hack David Der Beitrag wurde von davelee bearbeitet: Fri. 22. February 2008, 09:52 |
|
|
Mon. 17. March 2008, 17:31
Beitrag
#25
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 170 Mitglied seit: 15.05.2007 Mitglieds-Nr.: 908 |
saschapi@
Ich hätte eine Frage zur verwendung des Hacks, Ich wollte diesen Hack mit Listflex ausprobieren, jedoch weis ich nicht wie ich mit diesem Modul die Pfadangabe manipulieren kann. (wie z.B. bei der PIC Gallery) <a href="{path}large/{file}" title="{title}"><img src="{path}{thumbfile}" alt="{filedesc}" /></a> Habe ich da eine falsche Vorgehensweise? |
|
|
Mon. 17. March 2008, 19:36
Beitrag
#26
|
|
Advanced Member Gruppe: Moderators Beiträge: 911 Mitglied seit: 26.06.2006 Wohnort: Essen; Ruhrgebiet Mitglieds-Nr.: 4 |
Ich kenn jetzt die Möglichkeiten von Listflex nicht, aber da wird es doch vermutlich ähnlich sein wie in deinem Beispiel Das erscheint mir nämlichrichtig!
-------------------- |
|
|
Tue. 18. March 2008, 09:43
Beitrag
#27
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 170 Mitglied seit: 15.05.2007 Mitglieds-Nr.: 908 |
Das ist eben mein problem, es gibt nur {imagurl:x} das den ganzen Pfad des Bildes angibt.
Bei Contentflex ( bzw. Bild 1.2) ist so viel ich weis das gleiche. In welchen fällen verwendest du deinen Hack ( falls diese frage gestattet ist ) ? |
|
|
Tue. 18. March 2008, 09:46
Beitrag
#28
|
|
Advanced Member Gruppe: Moderators Beiträge: 911 Mitglied seit: 26.06.2006 Wohnort: Essen; Ruhrgebiet Mitglieds-Nr.: 4 |
Ich nutzte das Ding mal für eine Bildgalerie... Da ist es nicht so
Vielleicht kannst du dir mal im Output der Galerie und in dem von dir genutzten Modul anschauen wie du es umrüsten kannst. -------------------- |
|
|
Tue. 18. March 2008, 09:53
Beitrag
#29
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 170 Mitglied seit: 15.05.2007 Mitglieds-Nr.: 908 |
Danke, werde ich mir anschauen
|
|
|
Wed. 19. March 2008, 13:15
Beitrag
#30
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 170 Mitglied seit: 15.05.2007 Mitglieds-Nr.: 908 |
Wie es ausschaut übersteigt die modifzierung des Moduls Listlex meine fähigkeiten
Aber danke dir für deine Hilfe David Der Beitrag wurde von davelee bearbeitet: Wed. 19. March 2008, 13:16 |
|
|
Guest_bkm_* |
Wed. 19. March 2008, 20:52
Beitrag
#31
|
Guests |
in der galerie funktioniert das ganze weil die werte aus der db gebaut werden.
bild 1.2 , list- && cflex benutzen cms:tags , die ja auf bestimmte art vorgegeben und nicht immer einheitlich sind. ( so gibt es im cms:tag <<file>> filename aber im <<image>> ist dieser nicht vorhanden. dafür könnte man aber das ganze mit <<basename>> ausgeben. output im bild 1.2 QUELLTEXT <?PHP $myImage['style'] = "MOD_VALUE[4]"; $myImage['desc'] = <cms:mod type="image" id="1" mode="desc" addslashes="true" />; //Stylesheet für Text hinzufügen $myImage['desc'] = ( "MOD_VALUE[4]" == "") ? $myImage['desc'] : '<span class="MOD_VALUE[4]">'. $myImage['desc'] .'</span>'; //Gibt es mehrere Tags, bei denen type und id gleich sind, ist es wichtig, dass das letzt "gleiche" Element alle erweiterten //Konfigurationsvariablen enthält (z.B. folders, subfolders) . Den nur die Variablen des "letzten" Tags können im Formular //weiterverarbeitet werden. Andernfalls bleibt z.B. die Auswahl von bestimmten Dateitypen ohne Wirkung. $myImage['fmtitle'] = <cms:mod type="image" id="1" mode="fmtitle" addslashes="true" />; $myImage['fmdesc'] = <cms:mod type="image" id="1" mode="fmdesc" addslashes="true" />; $myImage['filesize'] = <cms:mod type="image" id="1" mode="filesize" addslashes="true" />; $myImage['filethumb'] = <cms:mod type="image" id="1" mode="thumb" addslashes="true" />; $myImage['imagename'] = basename(<cms:mod type="image" id="1" mode="url" addslashes="true" menuoptions="false" />); $myImage['imageurldavelee']= str_replace($myImage['imagename'],"",<cms:mod type="image" id="1" mode="url" addslashes="true" menuoptions="false" />); $myImage['image'] = <cms:mod type="image" id="1" title="MOD_VALUE[0]" filetypes = "MOD_VALUE[5]" folders = "MOD_VALUE[6]" subfolders ="MOD_VALUE[7]" menuoptions ="MOD_VALUE[8]" addslashes="true" />; $myTplVars['style'] = '{style}'; $myTplVars['desc'] = '{desc}'; $myTplVars['fmtitle'] = '{fmtitle}'; $myTplVars['fmdesc'] = '{fmdesc}'; $myTplVars['filesize'] = '{filesize}'; $myTplVars['imagethumb'] = '{imagethumb}'; $myTplVars['imagename'] = '{imagename}'; $myTplVars['imageurldavelee'] = '{imageurldavelee}'; $myTplVars['image'] = '{image}'; $myTpl = "MOD_VALUE[2]"; $myTpl = str_replace($myTplVars, $myImage, $myTpl); eval('?>'.$myTpl); unset($myTpl, $myTplVars, $myImage); ?> deine ausgabe QUELLTEXT <a href="{imageurldavelee}large/{imagename}" title=" ">{imagethumb}</a> habe das aber nicht getestet, weil das gerade hier im editor entstanden ist |
|
|
Wed. 19. March 2008, 22:42
Beitrag
#32
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 170 Mitglied seit: 15.05.2007 Mitglieds-Nr.: 908 |
Funktioniert super im Bild 1.2 - Danke
Aber bei Listflex habe ich meine Probleme Die Ausgabe ist folgende: QUELLTEXT <a href="media/bild.JPGlarge/bild.JPG"><img src="media/bild_cms_thumb.jpg" /></a> in Listflex habe ich im output folgendes eingefügt: QUELLTEXT if (strpos($modv['tpl_checkup'],'{imagename:1}')!==false) $elements['imagename:1'] = basename(<cms:mod type="image" id="1" mode="url" addslashes="true" menuoptions="false" />); if (strpos($modv['tpl_checkup'],'{imagedavelee:1}')!==false) $elements['imagedavelee:1'] = str_replace('imagename:1',"",<cms:mod type="image" id="1" mode="url" addslashes="true" menuoptions="false" />); ich bin leider kein Modul experte wie man vieleicht merkt Der Beitrag wurde von davelee bearbeitet: Thu. 20. March 2008, 07:49 |
|
|
Guest_bkm_* |
Thu. 20. March 2008, 00:36
Beitrag
#33
|
Guests |
kann ich dir so auch nicht sagen habe ich noch nie benutzt, sieht aber so aus als könnte es so gehen
QUELLTEXT if (strpos($modv['tpl_checkup'],'{imagedavelee:1}')!==false) $elements['imagedavelee:1'] = str_replace($elements['imagedavelee:1'],"",<cms:mod type="image" id="1" mode="url" addslashes="true" menuoptions="false" />); ich wäre dafür das z.B. einheitlich in allen dafür geeigneten cms:tags path & url ohne dateinamen auszugeben und getrennt dazu den filenamen (wie cms:tag file). |
|
|
Thu. 20. March 2008, 07:55
Beitrag
#34
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 170 Mitglied seit: 15.05.2007 Mitglieds-Nr.: 908 |
Es hat leider nichts gebracht ich habe leider wieder die gleiche Ausgabe
ich wäre übrigens auch dafür das path & url einheitlich in den Modulen vorhanden wäre Der Beitrag wurde von davelee bearbeitet: Thu. 20. March 2008, 11:04 |
|
|
Thu. 20. March 2008, 13:02
Beitrag
#35
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 170 Mitglied seit: 15.05.2007 Mitglieds-Nr.: 908 |
So habs jetzt :
QUELLTEXT if (strpos($modv['tpl_checkup'],'{imagedavelee:1}')!==false) $elements['imagedavelee:1'] = str_replace($elements['imagename:1'],"",<cms:mod type="image" id="1" mode="url" addslashes="true" menuoptions="false" />); Update: Im Anhang befindet sich das modifizierte Listflex modul Die verlinkung ist jetzt anzusprechen mit {path} und {imagename} z.B. QUELLTEXT <a href="{path}large/{imagename}" title=" ">{imagethumb}</a> ListFlex_mit_path_und_imagename.cmsmod ( 149.19KB ) Anzahl der Downloads: 3 @Bkm Vielen dank für deine Hilfe Der Beitrag wurde von davelee bearbeitet: Thu. 20. March 2008, 13:37 |
|
|
Tue. 1. July 2008, 15:03
Beitrag
#36
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 170 Mitglied seit: 15.05.2007 Mitglieds-Nr.: 908 |
Habe wiedermal ein Problem mit diesem Hack
Bei meinem aktuellen Projekt werden im cache Ordner nur die Unterordner erstellt aber keine verkleinerten Bilder angelegt. Kann es sein das dieses Script nicht richtig funktioniert weil bei PHP Safemode auf ON eingestellt ist und die Sicherheitseinstellung dies verhindert? Ich kann es leider nicht ausprobieren weil der Provider diese Einstellungen nicht ändern will |
|
|
Vereinfachte Darstellung | Aktuelles Datum: 18.5.24 - 08:16 |