Seite 2 von 2

Verfasst: 18.04.2009, 13:38
von JohnBi
Ich muss das skalieren über php regeln und dann das skalierte Bild woanders ablegen, keine Ahnung wie, aber ich muss das dieses Wocheende noch schaffen... mal schauen ob ich es hinbekomme...

Verfasst:
von

Verfasst: 18.04.2009, 13:42
von Grillmeister
Ja, per Exec kannst du von PHP aus auf Imagemagick zufreifen. Falls das installiert ist, ist das sicher der bequemste Weg. So in der Art:

$command = "convert -thumbnail 300x200 -quality 80% ordner1/altesbild.jpg ordner2/neuesbild.jpg";
exec($command);

Verfasst: 18.04.2009, 13:45
von net(t)worker

Code: Alles auswählen

....
$kunden_id='5';
$uploadfile=$_POST['uploadfile'];

if&#40;mkdir&#40;$struct_id,0777&#41;&#41;&#123;echo 'Verzeichnis erstellt!<br>$uploaddir';&#125;

&#91;b&#93;//$uploaddir = "public/$kunden_id/";&#91;/b&#93;
....
woher nimmst du die Variable $struct_id für die Erstellung der neuen Ordner

lass dir zu testzwecken mal alle variabeln im script direkt vor der verwendung ausgeben....

Code: Alles auswählen

...
foreach&#40;$HTTP_GET_VARS as $name => $value&#41; &#123;$$name = $value;&#125;
foreach&#40;$HTTP_POST_VARS as $name => $value&#41; &#123;$$name = $value;&#125;
foreach&#40;$HTTP_COOKIE_VARS as $name => $value&#41;&#123;$$name = $value;&#125; 
...
das würde ich tunlichst sein lassen, da sich dem script so beliebige variabeln unterschieben lassen, ohne das diese geprüft werden... jede variable die von extern ins Script kommt muss validiert werden....

Verfasst: 18.04.2009, 13:47
von Michael
Man kann auch per gd auf die Funktionen von imageMagic zugreifen.

https://de.php.net/gd

Da gibt es z.B. die sehr komfortable Funktion "imagecopyresampled". Die kann man zum verleinern benutzen.

Mit imageJPEG kann man das verkleinerte Bild dann auf Platte speichern.

PS: Ich habe momentan mehr als 1TB Thumbshots auf meinen Linux Servern in je 1000 Unterverzeichnissen. Das ist (unter Linux) kein Problem.

Verfasst: 18.04.2009, 14:52
von JohnBi
Erstmal vielen Dank für eure Hilfen.

$struct_id ist gleich $kunden_id

und kommt aus der Datenbank, hab die aber zum Testen mal auf 5 gesetzt.

Das mit dem Unterjubeln der Variablen muss ich mir nochmal genau anschauen, aber irgendwie habe ich das bis jetzt nicht hinbekommen das er die Bilder in einen anderen ORDNER ablegt, das mit dem verkleinern und so habe ich wie von dir vorgeschlagen mit imagecopyresampled gelöst und funktioniert SUPER :D

Nur, warum der nicht die Datei auf in den einen Ordner schicken will verstehe ich einfach nicht und krieg das auch nicht hin.

Also im schlimmsten Fall sind es 8000x3x10 = 240 000 Bilder in einem Ordner, meint ihr das geht mir der Server fratze?

Ich könnte 5 Ordner machen und da immer das Script reinpacken, dann wären es nur noch 48 000 pro Ordner, die Zahlen machen mir einfach nur Angst.

Verfasst: 18.04.2009, 14:54
von JohnBi
ich versteh auch nicht warum ich danach per FTP keinen Zugriff auf den erstellten ORdner habe, also nichts reinladen kann... da stimmt irgendwas nicht, auch wenn ich den manuell erstelle und auf 777 stelle, läd er die Datei da auch nicht rein, immer nur in das Verzeichnis wo sich das Script befindet.

Verfasst: 18.04.2009, 14:57
von net(t)worker
ich würde die Bilder in ne DB packen und den Pfad dann per mod_rewrite von /pfad/zu/bild.gif zu bildausgabe.php umbiegen... in dem bildausgabe.php könnteste dann zugriffsrechte etc prüfen...

Verfasst: 18.04.2009, 15:10
von JohnBi
Das habe ich noch nie gemacht. Was mich auf die Palme bringt ist, weshalb der Upload nicht in den Ordner funktioniert, damit wären dann alle meine Probleme gelöst, jemand noch nen Tipp warum ich die Datei dort nicht ablegen kann?

Verfasst: 18.04.2009, 15:34
von net(t)worker
hast du denn geprüft ob alle Variabeln im script die richtigen Werte haben, ob ggf. savemode aktiviert ist oder sonstige restriktionen vorhanden sind?

Verfasst: 18.04.2009, 15:44
von JohnBi
wie überprüfe ich das?

Verfasst: 19.04.2009, 01:17
von nerd
net(t)worker hat geschrieben:ich würde die Bilder in ne DB packen und den Pfad dann per mod_rewrite von /pfad/zu/bild.gif zu bildausgabe.php umbiegen... in dem bildausgabe.php könnteste dann zugriffsrechte etc prüfen...
exec? bilder in datenbanken speichern? au weia!
exec sollte jeder gute hoster auf seinem server gesperrt haben, sonnst koennte ja jeder der sich ein wenig mit linux oder windows auskennt seinen account zur admingruppe hinzufuegen, einstellungen aendern, zugriff auf andere accounts/webspace auf dem server bekommen usw.
binaries in datenbanken speichern ist schlecht, weil dann praktisch jedesmal die datei 2x uebertragen werden muss: einmal db->webserver, dann webserver-> benutzer. waerend dieser zeit ist die db beschaeftigt, in welcher die performance andere anfragen leidet, je nach dateigroesse koennen somit schon recht wenige benutzer die db abwuergen. von backup und restore will ich hier garnicht anfangen, bei grossen binaries zickt mysql beim import gern mal rum und man muss die my.cnf bearbeiten.
deutlich besser ist es die dateien irgendwo im filesystem des webservers abzulegen und in der datenbank dann nur den pfad zum bild abzugeben, also z.b. /bilder/kunde5/123.jpg

nicht sicher warum es mit den berechtigungen nicht klappt.
alternativ kannst du auch per php eine ftp verbindung aufbauen, dazu deinen ftp-benutzernamen angeben und dann ueber diese ftp-verbindung die verzeichnisse anlegen.
https://nz2.php.net/manual/en/ftp.examples-basic.php

Verfasst: 19.04.2009, 01:26
von net(t)worker
nerd hat geschrieben:
net(t)worker hat geschrieben:ich würde die Bilder in ne DB packen und den Pfad dann per mod_rewrite von /pfad/zu/bild.gif zu bildausgabe.php umbiegen... in dem bildausgabe.php könnteste dann zugriffsrechte etc prüfen...
exec? bilder in datenbanken speichern? au weia!
:roll:

wo brauchst du denn für das Speichern und abfragen von Daten ein exec?

Verfasst: 19.04.2009, 02:20
von nerd
net(t)worker hat geschrieben: :roll:
wo brauchst du denn für das Speichern und abfragen von Daten ein exec?
hatte jemand anderes hier vorgeschlagen:
Grillmeister hat geschrieben:Ja, per Exec kannst du von PHP aus auf Imagemagick zufreifen. Falls das installiert ist, ist das sicher der bequemste Weg. So in der Art:

$command = "convert -thumbnail 300x200 -quality 80% ordner1/altesbild.jpg ordner2/neuesbild.jpg";
exec($command);

Verfasst: 19.04.2009, 06:56
von JohnBi
Das mit dem skalieren der Bilder habe ich über imagecopyresampled fein gelöst, aber das Problem mit dem Ordner bleibt bestehen. Eigentlich hat der Server alle Einstellungen die nötig sind, denn ich kann ja uploaden, nur nich in ein Unterverzeichnis... mal schauen, vielleicht finde ich heute ja ne Lösung.