Hallo,
Ich hab zwei kleine Probleme mit meinem Bildupload. Ich hoffe ihr könnt mir dabei helfen.
Vielleicht zuerst einmal wie mein Upload funktioniert [Quellcode dann weiter unten]:
Dem Skript sollte ein Bild per upload übergeben werden. Also prüft das Script erstmal ob eines angegeben wurde. Danach wird überprüft, ob es sich dabei um eine Datei mit zulässiger Endung handelt.
Danach wird mit imageCreateFrom[Type]() eine Instanz des Bildes erzeugt, das ganze mit imageCopyResized() mit zulässigen Größen in ein neues Bild kopiert und außerdem in einem zweiten ein thumb erzeugt. Mit imageJpeg(resource, [Pfad]) werden dann beide diese Bilder gespeichert.
Funktioniert soweit ja Perfekt, aber treten dabei 2 Probleme auf:
1)
Die Bilder sind nachher völlig im A****, und ich weiss ned woran das liegt.
Hier mal ein Beispiel:
Vorher: http://www.cineast.at/images/vorher.jpg
Nachher: http://www.cineast.at/images/nachher.jpg
2)
Manchmal, also nicht bei jedem Bild aber kommt eben vor, kommt folgender Fehler:
Warning: imagecopyresized(): Invalid image dimensions in /home/www/web313/html/fotos.php on line 137
Hier mal ein Beispiel wann (mit welchen werten) der fehler kommt:
Jetzt ist das einzige wo ich mir vorstellen könnte, dass der Fehler da liegt das -15, aber ein negativer Wert tritt immer entweder auf der ersten oder zweiten Position nach $image auf und der Fehler kommt nicht immer.
Hier noch der relevante Quellcode:
Ich hab zwei kleine Probleme mit meinem Bildupload. Ich hoffe ihr könnt mir dabei helfen.
Vielleicht zuerst einmal wie mein Upload funktioniert [Quellcode dann weiter unten]:
Dem Skript sollte ein Bild per upload übergeben werden. Also prüft das Script erstmal ob eines angegeben wurde. Danach wird überprüft, ob es sich dabei um eine Datei mit zulässiger Endung handelt.
Danach wird mit imageCreateFrom[Type]() eine Instanz des Bildes erzeugt, das ganze mit imageCopyResized() mit zulässigen Größen in ein neues Bild kopiert und außerdem in einem zweiten ein thumb erzeugt. Mit imageJpeg(resource, [Pfad]) werden dann beide diese Bilder gespeichert.
Funktioniert soweit ja Perfekt, aber treten dabei 2 Probleme auf:
1)
Die Bilder sind nachher völlig im A****, und ich weiss ned woran das liegt.
Hier mal ein Beispiel:
Vorher: http://www.cineast.at/images/vorher.jpg
Nachher: http://www.cineast.at/images/nachher.jpg
2)
Manchmal, also nicht bei jedem Bild aber kommt eben vor, kommt folgender Fehler:
Warning: imagecopyresized(): Invalid image dimensions in /home/www/web313/html/fotos.php on line 137
Hier mal ein Beispiel wann (mit welchen werten) der fehler kommt:
Code:
imagecopyresized($thumb, $image, -15, 0, 0, 0, 109, 80, 470, 344)
Hier noch der relevante Quellcode:
PHP-Code:
switch($ending[$last])
{
case 'jpg': case 'jpeg':
$image_old = imageCreateFromJpeg($_FILES['pic']['tmp_name']);
break;
case 'gif':
$image_old = imageCreateFromGif($_FILES['pic']['tmp_name']);
break;
case 'png':
$image_old = imageCreateFromPng($_FILES['pic']['tmp_name']);
break;
}
if($image_old)
{
$size = getimagesize($_FILES['pic']['tmp_name']);
$new[1] = $size[1];
$new[0] = $size[0];
if($size[0] > 470)
{
$fak = $size[0]/470;
$new[0] = $size[0]/$fak;
$new[1] = $size[1]/$fak;
}
if($new[1] > 600)
{
$fak = $new[1]/600;
$new[0] = $new[0]/$fak;
$new[1] = $new[1]/$fak;
}
$image = imageCreate($new[0], $new[1]);
imageCopyResized($image, $image_old, 0, 0, 0, 0, $new[0], $new[1], $size[0], $size[1]);
$thumb = imageCreate(80,80);
if($new[0] > $new[1])
{
$fak = $new[1]/80;
$thumbs[0] = round($new[0]/$fak, 0);
$thumbs[1] = round($new[1]/$fak, 0);
$minus = -($thumbs[0]-80)/2;
imageCopyResized($thumb, $image, round($minus,0), 0, 0, 0, $thumb[0], $thumb[1], $new[0], $new[1]);
} else
{
$fak = $new[0]/80;
$thumbs[0] = round($new[0]/$fak, 0);
$thumbs[1] = round($new[1]/$fak, 0);
$minus = -($thumbs[1]-80)/2;
imageCopyResized($thumb, $image, 0, round($minus,0), 0, 0, $thumbs[0], $thumbs[1], $new[0], $new[1]);
}
imageJpeg($image, 'fotos/'. $cat_id .'/'. $foto_id .'.jpg');
imageJpeg($thumb, 'fotos/'. $cat_id .'/minis/'. $foto_id .'.jpg');

Kommentar