Avatar billede Leoking Nybegynder
18. juni 2010 - 19:33 Der er 6 kommentarer og
1 løsning

Billedeuploader

Har et problem med min billedeupload. Min Resize virker ikke til det :/ . Får denne fejl : Fatal error: Call to undefined function imageresize() in D:\web\medieskolerne.dk\subdomains\hfprojekt\hfelev22\billeder-upload-verify1.php on line 34



Koden er :

<?php
//Her skal filen flyttes fra
$fra    = $_FILES['fil']['tmp_name'];

//Hvilken type fil arbejder vi med?
$ext    = strtolower(end(explode(".", $_FILES['fil']['name'])));

//Hvis filen er et jpg, jpeg eller gif billede
if($ext == "jpg" || $ext == "jpeg" || $ext == "gif")
{
$tid        = time();

//Her giver vi billedet et andet navn, så der ikke kommer to ens navne…
$nytNavn = $tid . "_" . rand(1, 1000000) . $ext;

//Her er vores destination
$til        = "../upload/billeder/large/" . $nytNavn;

//Her sker det magiske:
move_uploaded_file($fra, $til);

//Her resizer vi billedet med Xyborx's funktion
$newSizeWidth    = 75;
$newSizeHeight    = 75;
$newSizeDes    = "../upload/billeder/small/" . $nytNavn;
imageresize($til, $newSizeWidth, $newSizeHeight, "../upload/billeder/small/" . $nytNavn);

//Her ligges oplysningerne ind databasen
include('forbindelse.php');

$query    = "INSERT INTO billedebe (billede, tid) VALUES ('$billede', '$tid')";
mysql_query($query);
}

header("Location: billeder1.php");
?>
Avatar billede aners Nybegynder
18. juni 2010 - 20:21 #1
Du kalder en funktion som ikke er deklareret.
Avatar billede Leoking Nybegynder
18. juni 2010 - 20:29 #2
Hvordan får jeg den deklareret? :b .. noget du eventuelt kunne give et eksempel på ? .
Avatar billede ggxdg Nybegynder
18. juni 2010 - 22:34 #3
Du får den deklareret, enten ved at include den fil hvor funktionen er i, eller ved at tilføje den til den side du arbejder på.

Deklaration af funktion:

function funktionsnavn () {
}

hmm... jeg syntes at huske imageresize som værende en gyldig PHP funktion, men måske du kan bruge http://dk2.php.net/imagecopyresampled i stedet for.

Du skal lige vide at hukommelsen på serveren nok ikke tillader  behandling af særligt store billedfiler da billedet vidst nok bliver konverteret til et råt billedformat, når det resizes, hvilket nok giver problemer.
Avatar billede ggxdg Nybegynder
18. juni 2010 - 22:47 #4
du mangler i hvert fald Xyborx's funktion ("imageresize()")


imagecopyresampled  (  resource $dst_image  ,  resource $src_image  ,  int $dst_x  ,  int $dst_y  ,  int $src_x  ,  int $src_y  ,  int $dst_w  ,  int $dst_h  ,  int $src_w  ,  int $src_h  )



flg. burde kunne erstatte imageresize funktionen (der kan forekomme fejl i koden):
list($width, $height) = getimagesize("../upload/billeder/small/" . $nytNavn);
imagecopyresampled("../upload/billeder/small/" . $nytNavn, $til, 0, 0, 0, 0, $newSizeWidth, $newSizeHeight, $width, $height);
Avatar billede ggxdg Nybegynder
18. juni 2010 - 22:51 #5
og med en hurtig google-søgning fandt jeg den manglene funktion:




/*************************************************************\
* Image resizer, version 2.0 - Mar9,2003 *
* Returns true on success, false if there are errors *
* If destination file is specified, resized picture will be *
* saved with the specified name. Else, it is shown to browser *
* Version 2: Now scales both up and down, still preserving *
* aspect ratio, and it accepts not only jpeg, but *
* also png and possibly bmp *
}*************************************************************{
* Created by XyborX (www.xyborx.dk) *
* Feel free to use, modify and distribute, without profit. *
* I cannot be held liable for any damage this script might do *
\*************************************************************/
function imageresize($sourcefile,$maxwidth,$maxheight,$destinationfile=false)
{
$types=Array();
$types[1]='gif';
$types[2]='jpeg';
$types[3]='png';
$types[6]='wbmp';
list($width,$height,$type)=getimagesize($sourcefile);
$type_name=$types[$type];
$imagecreatefromtype='imagecreatefrom'.$type_name;
$imagetype='image'.$type_name;
if(!function_exists($imagecreatefromtype) || !function_exists($imagetype))
{
return false;
}
if($img_src=$imagecreatefromtype($sourcefile))
{
$ratio_height=$maxheight/$height;
$ratio_width=$maxwidth/$width;
$ratio=min($ratio_width,$ratio_height);
$newwidth=$width*$ratio;
$newheight=$height*$ratio;
// $img_dst=imagecreatetruecolor($newwidth,$newheight);
$img_dst=imagecreate($newwidth,$newheight);

// imagecopyresampled($img_dst, $img_src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagecopyresized($img_dst, $img_src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
if($destinationfile==false)
{
//header("Content-type: image/jpeg");
$imagetype($img_dst);
}
else
$imagetype($img_dst,$destinationfile);
imagedestroy($img_dst);
return true;
}
else
{
return false;
}
}
Avatar billede Leoking Nybegynder
20. juni 2010 - 13:31 #6
Hmm ggxdg prøvede din kode af .. men der er intet der hverken kommer i mine mapper eller databasen S: ..
Avatar billede ggxdg Nybegynder
20. juni 2010 - 14:50 #7
Hvilken en af koderne prøvede du af? XyborX's funktion, eller

imagecopyresampled("../upload/billeder/small/" . $nytNavn, $til, 0, 0, 0, 0, $newSizeWidth, $newSizeHeight, $width, $height);

?


Ligemeget hvad, burde den i det mindste uploade det umodificerede billede, da det er en ret simpel PHP funktion, som burde virke, hvis din fil ikke er for stor, og dit HTML input/post fungerer som det skal.

Du bør nok bruge XyborX's funktion da den bibeholder ratio af billedet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester