Abfrage ob bild zu groß bzw zu klein

Constan

Mitglied
Hi ich habe mir mal diesen Code zurechtgefummelt, nun habe ich aber noch eine Frage, wie kann ich noch die Überprüfung einfühgen ob das Bild die Vorgegebene Pixelanzahl hat. Wenn nicht dann soll er nur eine Fehlermeldung ausgeben.

Mein bisherieger code :
PHP:
if($_GET['action']=="upload"){
$tempname = $_FILES['localfile']['tmp_name'];
$name = $_FILES['localfile']['name'];
$type = $_FILES['localfile']['type'];
$size = $_FILES['localfile']['size'];
$maxsizebytes = ($maxsizemb * 1024 * 1024);
$game = $_GET['game'];
$uploadfile = "$uploaddir/bf2.jpg";


$con = ftp_connect("$ftp_server");


$login = ftp_login($con, "$user", "$password");

if ((!$con) || (!$login)) { $err[] = "FTP Verbindung fehlgeschlagen! Bitte die FTP Logindaten überprüfen!";
die; }


if(!preg_match("/\." . $types . "$/i", $_FILES["localfile"]["name"]))
{ $err[] = "ungültige Dateiendung"; }


if($size > "$maxsizebytes") {
    $err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt $maxsizemb MB!";
}


if(empty($err)){


$upload = ftp_put($con, $uploadfile, $localfile, FTP_ASCII);


if (!$upload) { echo "Ftp upload fehlgeschlagen!<BR><BR>"; } else { echo "Datei $name <B>erfolgreich</B> hochgeladen!<BR><BR>"; }
}

else {
    foreach($err as $error)
    echo "$error<br>";
}


ftp_quit($con); 
}
 
Habe mal was versucht aber das geht nicht. Ist das Ansatz jedoch richtig?

PHP:
$sizeh = getimagesize ($_FILES['localfile']['tmp_name']);

if(!$sizeh = 'width="520" height="22"') {
    $err[] = "Bitte Überprüfe die Größe (Pixel) des Bildes, diese darf nur 520 x 22 sein!";
}
 
Es wird ein Array aus 4 Elementen zurück gegeben. Im Array-Index 0 steht die Breite. Index 1 enthält die Höhe, 2 ein Flag je nach Grafik-Typ (1 = GIF, 2 = JPG, 3 = PNG, SWF = 4) und Index 3 die richtige Zeichenkette im Format "height=xxx width=xxx" zur Verwendung im IMG-Tag von HTML.

Der Ansatz ist richtig, aber du musst eben richtig auf das Array zugreifen.
Siehe auch hier:
http://de3.php.net/manual/de/language.types.array.php
 
GetImageSize gibt ein Array zurück, wie auch in der Dokumentation beschrieben hier ein etwas ausführlich Auszug, wie dieses Rückgabe array aussieht:

Code:
[0] = The width of the image. It is integer data type.
[1] = The height of the image. It is an integer data type.
[2] = Image Type Flag. It is an integer data type.
[3] = String for <img> tag (width="xxx" height="xxx"). It is a string data type.
[bits] = Number of bits. It is an integer data type.
[channels] = Number of channels. It is an integer data type.
[mime] = MIME type. It is a string data type.

PHP:
$sizeh = getimagesize ($_FILES['localfile']['tmp_name']); 
if($sizeh[0] !=520 OR $sizeh[1] != 22) {
    $err[] = "Bitte Überprüfe die Größe (Pixel) des Bildes, diese darf nur 520 x 22 sein!";
}
 
Ups hab die [X] vergessen, vielen dank.

Habe jetzt jedoch ein weiteres (leztes) Problem, Ich weis gehört nicht richtig in diese Thema aber der Code steht ja schon mal hier.

Die Bilder die ich hochlade sind Fehlerhaft. Photoshop sagt mir das ein Problem beim Interpretieren der JPEG-Daten aufgetreten ist. Andere Tools sagen nur Kann Bild nicht laden.

Was habe ich nun wieder falsch gemacht?
 
Du lädst die Dateien im ASCII Modus hoch, korrekt wäre meine ich Binary.

$upload = ftp_put($con, $uploadfile, $localfile, FTP_BINARY);
 
BINARY ist richtig danke wieder was dazugelernt auf das ich achten muss.

Vielen Dank ihr habt mir sehr geholfen.
Gruß an alle.
 
Zurück