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:
- 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
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!