Avatar billede maxburner Nybegynder
10. februar 2003 - 23:58 Der er 7 kommentarer og
2 løsninger

Nemmest at resize billeder i PHP

Hej

Jeg vil gerne høre om i kan hjælpe mig med hvordan jeg kan få et uploadet billedet til blive resize automatisk til feks 2 forskellige mål . 1 til thumbsize og den anden til feks 500 width?.

Jeg har læst noget med gb.lib? men hvordan kn jeg undersøge om udbyderen understøtter dette, hvis ikke hvordan kan jeg få det til at virke på web'en.

Håber i kan hjælpe mig..
PS. alle eksempler må IKKE indeholde '\ og \\ og \\\' osv. tegn, da disse ikke understøttes på min WEBhotel.
Avatar billede avminarm Juniormester
11. februar 2003 - 08:32 #1
du kan undersøge det ved at køre
<?php
phpinfo();
?>

eller spørge din udbyder ;o), hvis det ikke er installeret tror jeg ikke du kan få det til at virke på din side - så kan du bruge <img scr="pic.jpg" width="500" hight="100"> - men det er langt fra optimalt at resize på denne måde
Avatar billede stalle Nybegynder
11. februar 2003 - 10:33 #2
Ja, start med at spørge din udbyder - de har sikkert en support-mail-ting.

Og ja, det er noget med gd.lib eller imagemagick - imagemagick er hvad jeg bruger på min side..
Avatar billede eky Nybegynder
11. februar 2003 - 11:32 #3
Her er noget du ka' bruge som inspiration. Det kan uploade et billede, hvorefter det vises som en miniature, du kan klikke på, for at få det store billede.
<html>
<head>
<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 maxburner Nybegynder
11. februar 2003 - 22:07 #4
Info er der vist gd 'enable' understøttelse ver.  1.6.2 or higher

damn . enkel version er godt nok LANG :) - behøves isset ? er det ikke det samme som
if ($name)
end
if(isset($_POST['send']))
Sjovt nok at jeg koder lidt i php, men har stadig ikke forstået at bruge $_POST, eller andre $_xxxx og isset.
Avatar billede maxburner Nybegynder
11. februar 2003 - 22:30 #5
Jeg har lige testet sourcen, men der sker nitte når man upper
Avatar billede eky Nybegynder
12. februar 2003 - 09:00 #6
Du skal sørge for, at der er givet adgang (chmod 777) til det bibliotek, der uploades til. (og at det findes)

I mit eksempel er det pics og pics/thumbs

Du kan se koden i funktion her http://test.eky.dk/billede.php
Avatar billede maxburner Nybegynder
13. februar 2003 - 22:23 #7
jeg har prøvet, på dit link kommer der billed, men på min sker der intet og jo mapperne er fuld åbne med 777
Avatar billede eky Nybegynder
14. februar 2003 - 08:09 #8
Prøv evt. at gøre scriptet simplere. Start med bare at lave et upload-script, så du er sikker på, at du får uploaded filen.
Herefter kan du så bygge mere og mere på.

<html><body>
<?
if (isset($_FILES['userfile']['tmp_name']))
{
    if (is_uploaded_file($_FILES['userfile']['tmp_name']))
    {
      umask(033);
      move_uploaded_file($_FILES['userfile']['tmp_name'], "pics/".$_FILES['userfile']['name']);
    }
    else
    {
      echo "Possible file upload attack: filename ", $_FILES['userfile']['name'];
    }
}
?>

<FORM ENCTYPE="multipart/form-data" ACTION="upload billede.php" METHOD="POST">
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="2000000">
Send this file: <INPUT NAME="userfile" TYPE="file">
<INPUT TYPE="submit" VALUE="Upload">
</FORM>

</body></html>
Avatar billede maxburner Nybegynder
22. juni 2003 - 00:25 #9
Jeg har slet ikke fået det til at virke endnu.. men det må vente til anden gang. Tak anyway
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