webForumDet fria alternativet

Felmeddelande i uppladdning av bild

PHP

4 svar · 361 visningar · startad av K-man

Medlem sedan nov. 200217 inlägg
Frågan#1

Jag har fått ett konstligt felmeddelande som jag inte kan lösa. Jag har använt Mungos 2 goa funktioner för bilder:

function scalePic($filnamn, $nyttfilnamn, $maxX, $maxY, $kvalitet = 75) {
$im = ImageCreateFromJPEG($filnamn);

$im_width=imageSX($im);
$im_height=imageSY($im);

if ($maxX \> $maxY) {
    $factor = $maxX/$im_width;
    $new_width = $maxX;
    $new_height = $im_height \* $factor;
    }
else {
    $factor = $maxY/$im_width;
    $new_width = $maxY;
    $new_height = $im_height \* $factor;
    }

// resize
$new_im=ImageCreate($new_width,$new_height);
 ImageCopyResampleBicubic($new_im,$im,0,0,0,0,$new_width,$new_height,$im_width,$im_height);

// output
Imagejpeg($new_im,$nyttfilnamn,$kvalitet); // quality 75
    
// cleanup
ImageDestroy($im);
ImageDestroy($new_im);
}

function ImageCopyResampleBicubic ($dst_img, $src_img, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h)
/*
port to PHP by John Jensen July 10 2001 -- original code (in C, for the PHP
GD Module) by jernberg@fairytale.se
*/
{
for ($i = 0; $i < 256; $i++) { // get pallete. Is this algoritm correct?
$colors = ImageColorsForIndex ($src_img, $i);
ImageColorAllocate ($dst_img, $colors['red'], $colors['green'], $colors['blue']);
}

$scaleX = ($src_w - 1) / $dst_w;
$scaleY = ($src_h - 1) / $dst_h;

$scaleX2 = $scaleX / 2.0;
$scaleY2 = $scaleY / 2.0;

for ($j = $src_y; $j \< $dst_h; $j++) {
    $sY = $j \* $scaleY;

    for ($i = $src_x; $i \< $dst_w; $i++) {
        $sX = $i \* $scaleX;

        $c1 = ImageColorsForIndex ($src_img, ImageColorAt ($src_img, (int) $sX, (int) $sY + $scaleY2));
        $c2 = ImageColorsForIndex ($src_img, ImageColorAt ($src_img, (int) $sX, (int) $sY));
        $c3 = ImageColorsForIndex ($src_img, ImageColorAt ($src_img, (int) $sX + $scaleX2, (int) $sY + $scaleY2));
        $c4 = ImageColorsForIndex ($src_img, ImageColorAt ($src_img, (int) $sX + $scaleX2, (int) $sY));

        $red = (int) (($c1\['red'\] + $c2\['red'\] + $c3\['red'\] + $c4\['red'\]) / 4);
        $green = (int) (($c1\['green'\] + $c2\['green'\] + $c3\['green'\] + $c4\['green'\]) / 4);
        $blue = (int) (($c1\['blue'\] + $c2\['blue'\] + $c3\['blue'\] + $c4\['blue'\]) / 4);

        $color = ImageColorClosest ($dst_img, $red, $green, $blue); 
        ImageSetPixel ($dst_img, $i + $dst_x, $j + $dst_y, $color); 
    }
}

}

Men sen jag har då lite kod till som använder dessa 2 funktioner. (Den e inte heller min egen kanske rent av Mungos oxå??). I samband med detta får jag detta felmeddelande:

Fatal error: Call to undefined function: imagecreatefromjpeg() in c:\inetpub\wwwroot\Filer\laddaupp.php on line 16

Bilden som jag valt att ladda upp läggs i uploadbilder så dit kommer man men mer än så händer inte.

Hur löser man detta????

Tacksam för hjälp /K-man

()

Medlem sedan nov. 200217 inlägg
#2

extrakoden

Det här e den koden som använder de 2 funktionerna:

if (isset($_FILES['fileUpload']))
{
include ("dbinfo.php");
$godkanda_typer[] = "image/pjpeg" ; # jpeg
$godkanda_typer[] = "image/jpeg" ; # jpeg
//-----------------------------------------------
// Lägg in kontroll så alla uppgifter är ifyllda
//-----------------------------------------------
# om det inte är ett fel och om filtypen är någon av de godkända
# så flyttar vi den till till en katalog
if ($_FILES['fileUpload']['error'] == 0 && in_array( $_FILES['fileUpload']['type'], $godkanda_typer))
{
# kontrollera om den går att flytta från sin temorära plats och tillderar bilden ett unikt namn
$tumnagel = date('U');
$filnamn = $tumnagel.substr($_FILES['fileUpload']['name'],-4);
$tumnagel .= "_thumb".substr($_FILES['fileUpload']['name'],-4);
if (move_uploaded_file($_FILES['fileUpload']['tmp_name'], "uploadbilder/".$filnamn))
{
# visa om det gick och skapar en thumbnail av den uppladdade filen
$filename = "uploadbilder/".$filnamn;
$maxhojd = 100;
$maxbredd = 100;
$quality = 75;
scalePic($filename, $tumnagel, $maxhojd, $maxbredd, $quality);
$sql="INSERT INTO bild (bildnamn, thumb, rubrik, text, mid) VALUES ('{$filnamn}', '{$tumnagel}','{$_POST['headline']}', '{$_POST['text']}', {$_POST['mid']})";
$resultat=mysql_query($sql);
$_SESSION['sess_mess'] = "Bilden är inlagd.";
// header("Location: laddaupp.php}");
exit;
}
else
{
$_SESSION['sess_mess'] = "Det gick inte att ladda upp filen till servern.";
// header("Location: laddaupp.php");
exit;
}
}
else
{
$_SESSION['sess_mess'] = "Fel filtyp...endast \".jpg\" är tillgåtet";
// header("Location: laddaupp.php");
exit;
}
}

Medlem sedan nov. 200013 890 inlägg
#3

Hej!

Använd gärna [ php ]-taggarna när du postar PHP-kod. ;)
Är du säker på att GD-lib är installerat och aktiverat?

Medlem sedan mars 20025 907 inlägg
#4

Du måste ha GD installerat och aktiverat. Öppna din php.ini och leta reda på nedstående rad. Plocka bort semikolonet (;) först på raden och starta sen om din webbserver. Borde hjälpa.
;extension=php_gd2.dll

Medlem sedan nov. 200217 inlägg
#5

Ahh...man tackar. Nu kom inget felmeddelande.Ibland ska man ju inte syssla med php på måndagar...=)

/K-man

262 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)