Hallo,
ich habe folgendes Problem, bei dem ich hoffe ihr könnt mir weiterhelfen:
Der Upload von JPG-Fotos über mein Redaktionstool (siehe Code nachfolgend) funktioniert an sich ganz gut aber leider nur solange die Pixelmaße/Bildfläche unter 1.500.000 Bildpunkten bleibt.
Beispiel: 1250 x 1250 funktioniert nicht, 1225 x 1225 jedoch schon
(unabhängig von der Dateigröße - das Bild mit 1225x1225 funktioniert auch dann noch wenn die Dateigröße fast die doppelten KBs vom anderen Bild hat)
Da dieser Upload auf anderen Webhosts bereits ohne diesen Fehler im Einsatz ist, nehme ich an, dass dies wahrscheinlich am Provider liegt oder?
Hat jemand eine Ahnung an welchem Parameter dies liegen könnte? (Damit ich diese Info dann an meinen Provider weiterleiten kann - sonst warte ich dort vergebens auf eine Lösung!)
Danke im Voraus für eure Infos & Hilfe.
Lg erawan
Bilduploadformular
<label>Upload: <input name='userimg' type='file' value='' /> (Nur JPG-Dateien, max. 1,5 MB, Bild wird automatisch verkleinert)</label>
Formularhandler (Bildcheck wird noch ohne Probleme gemacht dann ist Ende)
$var = date("ymd_");
$destdir = "../media/meldungen/";
include("uploads.php"); // siehe Code nachfolgend
// Upload des Bildes
if (isset($_FILES["userimg"]) && !empty($_FILES["userimg"]["name"])) {
$name = $var.strtolower(strtr($_FILES["userimg"]["name"],' ','_'));
if(!CheckBild("userimg")){ echo "<p class='errmsg'><b>Bild-Check NICHT erfolgreich</b></p>\n"; break; }else{
echo "<p class='okmsg'><b>Bild-Check erfolgreich</b></p>\n"; }
if(SaveBild("userimg","320","75",$destdir,$name)){
$news_bild = $name;
echo "<p class='okmsg'><b>Bild-Upload erfolgreich</b></p>\n";
}else{
$news_bild = "";
echo "<p class='errmsg'><b>Bild-Upload NICHT erfolgreich</b></p>\n";
}
}
Dateihandler
function CheckBild($userinput){
$pfad = pathinfo($_FILES[$userinput]["name"]);
$extorig = $pfad["extension"];
$ext = strtolower($extorig);
if ( $ext != "jpg" && $ext != "jpeg"){
print("<p class='errmsg'><b>Das Dateiformat des angegebenen Bildes ist nicht erlaubt (.$ext)!</b><br/><br/><a href='javascript:history.back()'>zurück zum Formular</a></p>\n");
return false;
}
$size = $_FILES[$userinput]["size"];
if ( $size > 2000000){
$sizekb = round(strtr(($size/1024),'.',','),2);
print("<p class='errmsg'><b>Das angegebene Bild ist zu groß ($sizekb KB)! Bitte wählen Sie ein kleineres!</b><br/><br/><a href='javascript:history.back()'>zurück zum Formular</a></p>\n");
return false;
}
return true;
}
function SaveBild($userinput, $maxsize, $qualitaet, $destdir, $name){
// Bildmaße ermitteln
$size = @getimagesize($_FILES[$userinput]["tmp_name"]);
$orig_width = $size[0];
$orig_height = $size[1];
// Bild zuschneiden ja/nein
if($orig_width > $maxsize || $orig_height > $maxsize){
// ja - neue Maße ausrechnen
if($orig_width > $orig_height) {
// Querformat
$new_width = $maxsize;
$imgprop = $new_width / $orig_width;
$imgvsize = $orig_height * $imgprop;
$new_height = ceil($imgvsize);
}else{
// Hochformat
$new_height = $maxsize;
$imgprop = $new_height / $orig_height;
$imghsize = $orig_width * $imgprop;
$new_width = ceil($imghsize);
}
}else{
// nein - keine Anpassung nötig
$new_width = $orig_width;
$new_height = $orig_height;
}
$ziel = $destdir.$name;
$orig_file = imagecreatefromjpeg($_FILES[$userinput]["tmp_name"]);
$new_file = imagecreatetruecolor($new_width, $new_height);
$image = imagecopyresampled($new_file, $orig_file, 0, 0, 0, 0, $new_width, $new_height, $orig_width, $orig_height);
if(imagejpeg($new_file, $ziel, $qualitaet)){
@imagedestroy($orig_file);
@imagedestroy($new_file);
@imagedestroy($image);
chmod($ziel,0644);
return true;
}else{
@imagedestroy($orig_file);
@imagedestroy($new_file);
@imagedestroy($image);
return false;
}
}