Avatar billede danic Nybegynder
19. januar 2003 - 22:07 Der er 9 kommentarer og
1 løsning

Sætte størrelse på et billede før upload

Jeg har en side hvor brugere har mulighed for at uploade et billede, da jeg ikke vil have at billederne skal optage alt for meget plads ønsker jeg at de bliver formateret til:

135x195 pixels

Hvordan tilføre jeg dette til min upload?

Nu bruger jeg følgende: copy($file, $updir."/".$nytnavn);
Avatar billede sylvesternielsen Nybegynder
19. januar 2003 - 22:37 #1
Du skal bruge gdlib...

Du skal først uploade filen, så skal du resize den og slette den originale...
Avatar billede danic Nybegynder
20. januar 2003 - 08:03 #2
Ok - jeg har koden til at uploade.

Hvordan resize jeg den og slette den originale?
Avatar billede eky Nybegynder
20. januar 2003 - 08:41 #3
På adressen http://test.eky.dk kan du se hvordan nedenstående kode ser ud. Den kan det du spørg om.

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Ny side 2</title>
</head>

<body>

<?php


if(isset($_POST['send']))
{

if($_POST['send'] == "ok") {

//tilladte filtyper. Tilføj fx. "image/gif"
    $allowedTypes = array("image/jpeg", "image/pjpeg", "image/jpg");

    $maxFileSize = 1030720; //tilladt max-størrelse i bytes

    $max_width = 1024; //Ja, tilladte max. højde
    $max_height = 768; //Tilladte max. bredde

//*nix-path til originalfilens endelige placering
    $path = $_SERVER['DOCUMENT_ROOT'] . "pics/";

    IF($_FILES['img']['size']> 0)
    {

//Er fil-typen blandt tilladte?
        IF (in_array($_FILES['img']['type'],$allowedTypes))
        {

//Er fil-størrelsen under max. tilladte?
            IF ($_FILES['img']['size'] <= $maxFileSize)
            {

//Find billedets størrelse
                $size = getimagesize($_FILES['img']['tmp_name']);

//Filen er ikke for bred
                if($size[0] < $max_width)
                {

//Filen er ikke for høj
                    if($size[1] < $max_height)
                    {

//Læseligt tidsstempel - tilføjes senere filnavn og giver derved et unikt filnavn
                        $tid = date("His_dmy", time());

//Udregn skaleringsforholdet på thumb, her skal 100 rettes til den ønskede bredde
                        $new_w = 100;
                        $division = $size[0] / 100;
                        $new_h = $size[1] / $division;

//Lav et nyt billede så vi kan komme igang
                        $dst_img=ImageCreateTrueColor($new_w,$new_h);

                        $src_img=ImageCreateFromJpeg($_FILES['img']['tmp_name']);

//Smid noget indhold i, og resize
                        ImageCopyResized($dst_img,$src_img,0,0,0,0,$new_w,$new_h,ImageSX($src_img),ImageSY($src_img));

//*nix-path til thumbfilens endelige placering
                        $filename2 = "./pics/thumbs/" . $img=$tid.$_FILES['img']['name'];

//Udfør det hele
                        //echo "dst_img=".$dst_img."<br>";
                        //echo "filnavn2=".$filename2."<br>";
                        ImageJpeg($dst_img, $filename2);

//Flyt filen fra tmp til endelig placering
                        move_uploaded_file($_FILES['img']['tmp_name'], $path.$tid.$_FILES['img']['name']) or die("Desværre er der sket en fejl!");
                        echo "<a href='pics/".$tid.$_FILES['img']['name']."'><img border='0' src='".$filename2."'></a><br>";
                        if(isset($_POST['tekst']))
                        {
                            echo $_POST['tekst'];
                        }
                    }

                    ELSE
                    {
//Fejlmedl. hvis fil over max. tilladt
                        $fejl = "Billede ikke sat ind: Filen er for høj!";
                    }
                }

                ELSE
                {
//Fejlmedl. hvis fil over max. tilladt
                    $fejl = "Billede ikke sat ind: Filen er for bred!";
                }
            }

            ELSE
            {
//Fejlmedl. hvis fil over max. tilladt
                $fejl = "Billede ikke sat ind: Filen er for stor!";
            }
        }
        ELSE
        {
//Fejlmedl. hvis fil-format ikke tilladt
            $fejl = "Billede ikke sat ind: Forkert fil-format!";
        }
    }

}
}
if(isset($fejl))
{echo $fejl;
}
?>

<p>
<form name="form" enctype="multipart/form-data" method="post">
<input type="hidden" name="send" value="ok">

<table align="center" width="100%" cellspacing="0" cellpadding="2" border="0">
<tr>
  <td width="200" nowrap align="right"><b>Billede:</b></td>
  <td><input name="img" class="file" type="file" style="width:80%"></td>
</tr>
<tr>
  <td></td>
  <td><input type="submit" class="knap" style="width:80%" value="Upload billede"></td>
</tr>
<tr>
  <td width="200" nowrap align="right"><b>Tekst:</b></td>
  <td><input type="text" name="tekst" size="20"></td>
</tr>
</table>

</form>
</p>



</body>

</html>
Avatar billede eky Nybegynder
20. januar 2003 - 08:42 #4
Du skal vælge punktet Upload + tumbnail (http://test.eky.dk/billede.php)
Avatar billede avminarm Juniormester
20. januar 2003 - 11:20 #5
eky>> vil dit script ikke kun virke på en unix maskine?
Avatar billede eky Nybegynder
20. januar 2003 - 20:52 #6
avminarm>> nej, det virker både på Unix og Windows, men kræver, som dj_saw skriver, at gdlib er installeret.
Mit eksempel kører på en Windows pc.
Avatar billede avminarm Juniormester
20. januar 2003 - 21:47 #7
ok :-)
Avatar billede danic Nybegynder
22. januar 2003 - 20:33 #8
Jeg har nu prøver scriptet men får denne her fejl:

Warning: SAFE MODE Restriction in effect. The script whose uid is 1507 is not allowed to access /home owned by uid 0 in /uploadpic/uploadpic.php on line 78
Desværre er der sket en fejl!
Avatar billede danic Nybegynder
22. januar 2003 - 21:30 #9
Jeg har fundet den kode jeg skulle bruge et andet sted:

<?

$src_file=("signs.jpg");
$maxH=195;
$maxW=135;

$src_img = imagecreatefromjpeg("$src_file");
$w=ImageSX($src_img);
$h=ImageSY($src_img);
$ratio=$w/$h;

if ($maxW<1) $maxW=10000;
if ($maxH<1) $maxW=10000;
if ($maxW < $maxH*$ratio) $maxH=$maxW/$ratio;
else $maxW=$maxH*$ratio;

//$dst_img = imagecreate($maxW,$maxH);
$dst_img=ImageCreateTrueColor($maxW,$maxH);

imagecopyresized($dst_img, $src_img,0,0,0,0,$maxW,$maxH,ImageSX($src_img),ImageSY($src_img));
$path="../pics/".substr($src_file, 0,-4).".jpg";
imagejpeg($dst_img, $path);
return $path;

?>

Men her er lidt point for indsatsen!
Avatar billede eky Nybegynder
23. januar 2003 - 12:36 #10
Tak for det. Jeg vil tro, den fejl du fik, har noget med adgang at gøre. Der skal være upload adgang, samt gives adgang til det bibliotek der uploades til.
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