Avatar billede mrblues Nybegynder
15. marts 2007 - 19:29 Der er 14 kommentarer og
1 løsning

Upload resize kombination hjææælp

Hej

Jeg sidder og er ved at lære det her php her, men jeg er ved at prøve på at kombinere disse 2 scripts "et upload og et resize billede script" men det kan jeg simpelthen ikke få til at funke måske der er en der kan hjælpe håber jeg for det haster lidt...

På forhånd mange mange tak...

Her er upload scriptet..

<?php
if ($_FILES['minfil']) //Har brugeren forsøgt at uploade noget?
{
//Bestem hvor filen skal smides hen og og hvad den skal hedde
$destination = "photo/" . $_FILES['minfil']['name'];

//Forsøg at flyttede den uploadede fil har dens midlertidige destination til den nye
if (move_uploaded_file($_FILES['minfil']['tmp_name'], $destination))
{
echo "Filen" . $_FILES['minfil']['name'] . " blevet uploadet";
}
else
{
echo "Der er sket en fejl";
}
}
?>





Og resize scriptet..


<?php
list($bredde, $hojde) = getimagesize("mitbillede.jpg"); //Find højden og bredden på det billede jeg vil resize
$forhold = $hojde/$bredde; //Hvor stor er højden i forhold til bredden?

//Find den nye højde og bredde
$bredde_ny = 100;
$hojde_ny = round($bredde_ny*$forhold);

//Load/opret billeder
$source = imagecreatefromjpeg("mitbillede.jpg");
$destination = imagecreate($bredde_ny, $hojde_ny);

//Resize
imagecopyresized($destination, $source, 0, 0, 0, 0, $bredde_ny, $hojde_ny, $bredde, $hojde);

//Gem
imagejpeg($destination, "nyfil_resized.jpg");
?>
Avatar billede jakobdo Ekspert
16. marts 2007 - 08:28 #1
Har dette script liggende:

<?php

function resize( $filename, $newfilename, $maxw, $maxh )
{
    $srcim = imagecreatefromjpeg( $filename );
    $ow = imagesx( $srcim );
    $oh = imagesy( $srcim );
    $wscale = $maxw / $ow;
    $hscale = $maxh / $oh;
    $scale = ( $hscale < $wscale ? $hscale : $wscale );
    $nw = round( $ow * $scale, 0 );
    $nh = round( $oh * $scale, 0 );
    $dstim = imagecreatetruecolor( $nw, $nh );
    imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
    imagejpeg( $dstim, $newfilename, 85 );
    imagedestroy( $dstim );
    imagedestroy( $srcim );
    return file_exists($newfilename);
}

$uploadDir = "/PATH/"; //Husk mappen skal chmod'es til 644
$maxHeigth = 100;
$maxWidth  = 100;
$maxSize  = 4; //Angives i MB
$pics      = array('jpeg','jpg','jpe'); //Hvilke filtyper vil vi godtage?

$maxSize  = $maxSize * 1024 * 1024;

if($_FILES['userFile']['size'] > 0)
{
    $uploadfile = $uploaddir . basename($_FILES['userFile']['name']);
 
    if($_FILES['userFile']['size'] > $maxSize)
    {
        echo "Dit billede er for stort, prøv med mindre...";
        exit();
    }
 
    $ext = strtolower(end(explode('.',$_FILES['userFile']['name'])));
 
    if(!in_array($ext,$pics))
    {
        echo "Forkert billede format, prøv med et andet...";
        exit();
    }

    resize( $_FILES['userFile']['tmp_name'], $uploadfile, $maxWidth, $maxHeight );
 
    header("location: " . $_SERVER['PHP_SELF']);
    exit();
}
?>

<form enctype="multipart/form-data" action="<?=$_SERVER['PHP_SELF'];?>" method="POST">
<table>
    <tr><td>Send this file:</td><td><input name="userFile" type="file" /></td></tr>
    <tr><td colspan="2"><input type="submit" value="Send File" /></td></tr>
</table>
</form>
Avatar billede mrblues Nybegynder
16. marts 2007 - 10:06 #2
Hej

Jek kan ikke få det til at virke har cmod mappen og det er en jpg fil jeg uploader men jeg får intet billede over i mappen på serveren, jeg har ændret mappen path til photo i stedet men det er ikke det vel.

Når jeg trykker submit knappen får jeg bare en ny tom formulat ????????
Avatar billede jakobdo Ekspert
16. marts 2007 - 11:19 #3
Får du ngole fejl?
Avatar billede mrblues Nybegynder
16. marts 2007 - 12:38 #4
Hej igen

Nej jeg får ingen fejl får bare en blank skærm når jeg trykker upload..

Her er scriptet jeg har kun ændret $uploadDir = photo  !er dette ikke rigtigt!

<?php

function resize( $filename, $newfilename, $maxw, $maxh )
{
    $srcim = imagecreatefromjpeg( $filename );
    $ow = imagesx( $srcim );
    $oh = imagesy( $srcim );
    $wscale = $maxw / $ow;
    $hscale = $maxh / $oh;
    $scale = ( $hscale < $wscale ? $hscale : $wscale );
    $nw = round( $ow * $scale, 0 );
    $nh = round( $oh * $scale, 0 );
    $dstim = imagecreatetruecolor( $nw, $nh );
    imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
    imagejpeg( $dstim, $newfilename, 85 );
    imagedestroy( $dstim );
    imagedestroy( $srcim );
    return file_exists($newfilename);
}

$uploadDir = "/photo/"; //Husk mappen skal chmod'es til 644
$maxHeigth = 100;
$maxWidth  = 100;
$maxSize  = 4; //Angives i MB
$pics      = array('jpeg','jpg','jpe'); //Hvilke filtyper vil vi godtage?

$maxSize  = $maxSize * 1024 * 1024;

if($_FILES['userFile']['size'] > 0)
{
    $uploadfile = $uploaddir . basename($_FILES['userFile']['name']);
 
    if($_FILES['userFile']['size'] > $maxSize)
    {
        echo "Dit billede er for stort, prøv med mindre...";
        exit();
    }
 
    $ext = strtolower(end(explode('.',$_FILES['userFile']['name'])));
 
    if(!in_array($ext,$pics))
    {
        echo "Forkert billede format, prøv med et andet...";
        exit();
    }

    resize( $_FILES['userFile']['tmp_name'], $uploadfile, $maxWidth, $maxHeight );
 
    header("location: " . $_SERVER['PHP_SELF']);
    exit();
}
?>

<form enctype="multipart/form-data" action="<?=$_SERVER['PHP_SELF'];?>" method="POST">
<table>
    <tr><td>Send this file:</td><td><input name="userFile" type="file" /></td></tr>
    <tr><td colspan="2"><input type="submit" value="Send File" /></td></tr>
</table>
</form>
Avatar billede jakobdo Ekspert
16. marts 2007 - 13:54 #5
Det kan være billedet først skal flyttes med move_uploaded_file()
Men du kan lige prøve at rette:

resize( $_FILES['userFile']['tmp_name'], $uploadfile, $maxWidth, $maxHeight );
tiL

if(resize( $_FILES['userFile']['tmp_name'], $uploadfile, $maxWidth, $maxHeight ))
{
echo "RESIZED OK";
}
else
{
echo "RESIZED FAILED";
}
Avatar billede mrblues Nybegynder
16. marts 2007 - 14:26 #6
Hejsa

Nu siger den RESIZED FAILED
Avatar billede mrblues Nybegynder
16. marts 2007 - 14:28 #7
Hvordan gør jeg lige det der med move_uploaded_file() som du nævner er lidt grøn til det her php...
Avatar billede jakobdo Ekspert
16. marts 2007 - 14:37 #8
Inden:
resize( $_FILES['userFile']['tmp_name'], $uploadfile, $maxWidth, $maxHeight );
Laver du:
move_uploaded_file($_FILES['userFile']['tmp_name'], $uploadfile);
Og så:
resize($uploadfile,"NYT_NAVN_FILEN.jpg" $maxWidth, $maxHeight );
Avatar billede mrblues Nybegynder
16. marts 2007 - 14:59 #9
Hej du er hurtig det er super

jeg skrev move uploaded ind og nu flytter den filen over på serveren men jeg forstår ikke helt det med resize($uploadfile,"NYT_NAVN_FILEN.jpg" $maxWidth, $maxHeight );
kan du forklare mig det...NYT_NAVN_FILEN.jpg er det en variabe eller hvordan
Avatar billede jakobdo Ekspert
16. marts 2007 - 15:36 #10
Ja, det er navnet det skal være på den resizede fil! :o)
Der skal lige laves lidt kode.
Du kunne jo evt. tage filen som: image.jpg og lave om til: thumb_image.jpg
Avatar billede mrblues Nybegynder
16. marts 2007 - 15:57 #11
Hej

Jeg må nok indrømme jeg er totalt lost lige nu, skovler rundt, jeg mister helt tråden ved det resize høøø...
Avatar billede jakobdo Ekspert
16. marts 2007 - 16:32 #12
Skulle du ikke resize billedet?
Avatar billede mrblues Nybegynder
16. marts 2007 - 17:15 #13
Hej

Så så jeg endelig lyset det virker YYYEEEEHHHH

Takker mange gange for hjælpen er nok tilbage med nye problemer snart :-))

Sidste spørgsmål hvordan giver jeg dig de points
Avatar billede jakobdo Ekspert
16. marts 2007 - 17:37 #14
Du kan acceptere mit svar, nu hvor jeg har lagt et.
Avatar billede jakobdo Ekspert
16. marts 2007 - 18:13 #15
Takker for point.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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