Avatar billede vix-mix Nybegynder
25. april 2007 - 14:35 Der er 13 kommentarer og
1 løsning

Hjælp til rescale et billede

Hej eksperter

Jeg har dette script:

function resize( $filename, $newfilename, $maxw, $maxh )
{
    $result = false;
    $extension = end(explode(".",$filename));
    $srcim = "";
    switch($extension)
    {
        case "jpg":
        case "jpeg":
            $srcim = imagecreatefromjpeg( $filename );
            break;
        case "gif":
            $srcim = imagecreatefromgif( $filename );
            break;
        default:
            //Her skal vi helst ikke være!
            return false;
    }
       
    $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 );
    $trans_color = imagecolorallocate($dstim, 255, 0, 0);
    imagecolortransparent($dstim, $trans_color);
    imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
   
    $result = false;
       
    switch($extension)
    {
        case "jpg":
        case "jpeg":
            $result = imagejpeg( $dstim, $newfilename, 85 );
            break;
        case "gif":
            $result = imagegif( $dstim, $newfilename);
            break;
        default:
            //Her skal vi helst ikke være!
            return false;
    }
   
    imagedestroy( $dstim );
    imagedestroy( $srcim );
    return $result;
}
  $filetyper = array("image/gif", "image/jpeg", "image/jpg", "image/pjpeg"); 
  if (isset($_FILES['upfile']['name']) && $_FILES['upfile']['name'] == "") {
echo"<table width=\"400\"  border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" class=\"main_border\">
  <tr class=\"log_bg\">
    <td width=\"20\" valign=\"middle\"><img src=\"../img/godkend.gif\" width=\"23\" height=\"25\"></td>
    <td width=\"380\" valign=\"middle\"><div align=\"left\">&nbsp;Der blev ikke valgt et billede.</div></td>
  </tr>
</table><br>";
  }
  if (isset($_FILES['upfile']['name']) && $_FILES['upfile']['name'] !="") {
    if(is_uploaded_file($_FILES['upfile']['tmp_name'])) {
    $sti = "../img/vine/";
    $uldir = $sti;
    $ulfile = $uldir.basename($_FILES['upfile']['name']);
    $thumbFile = $uldir."thumb_".basename($_FILES['upfile']['name']);
    move_uploaded_file($_FILES['upfile']['tmp_name'], $ulfile);
    resize($ulfile,$thumbFile,35,85);
    }
$thumb = "img/vine/thumb_" . $_FILES['upfile']['name'];
$pic = "img/vine/" . $_FILES['upfile']['name'];
  }
}


jeg ved det er stort ;) scriptet gør pt. at den smider et thumb billede op i ca størrelse 35*85 men jeg vil gerne have at den resizer det originale billede også til 200*509.

Jeg håber i kan hjælpe.

Mvh
Avatar billede river_rage Nybegynder
25. april 2007 - 14:42 #1
Har du prøvet at kalde funktionen igen med andre værdier for $newfilename, $maxw og $maxh?
Avatar billede vix-mix Nybegynder
25. april 2007 - 16:10 #2
nej det har jeg ikke lige, men det er fordi jeg ikke helt kan se hvordan jeg skal sørge for at det gældre for variablen $pic
Avatar billede jakobdo Ekspert
26. april 2007 - 20:41 #3
Prøv at ret til:

if (isset($_FILES['upfile']['name']) && $_FILES['upfile']['name'] !="")
{
    if(is_uploaded_file($_FILES['upfile']['tmp_name']))
    {
        $sti = "../img/vine/";
        $uldir = $sti;
        $ulfile = $uldir.basename($_FILES['upfile']['name']);
        $thumbLargeFile = $uldir."thumb_large_".basename($_FILES['upfile']['name']);
        $thumbSmallFile = $uldir."thumb_small_".basename($_FILES['upfile']['name']);
        move_uploaded_file($_FILES['upfile']['tmp_name'], $ulfile);
        resize($ulfile,$thumbFile,200,509);
        resize($ulfile,$thumbFile,35,85);
    }
    $thumb = "img/vine/thumb_" . $_FILES['upfile']['name'];
    $pic = "img/vine/" . $_FILES['upfile']['name'];
}
Avatar billede vix-mix Nybegynder
26. april 2007 - 21:08 #4
det du har ændret, gør det så billedet bliver 200*509 og så kalder variablen $pic?
Avatar billede jakobdo Ekspert
26. april 2007 - 21:13 #5
Den bruger ikke $pic til noget!
Det er noget du kode måske bruger længere nede i din kode.
Avatar billede vix-mix Nybegynder
26. april 2007 - 21:15 #6
ah okay, jeg bruger den til at smide op i min db så jeg kan hente thumb eller det store billede når det er nødvendigt
Avatar billede zurekk Nybegynder
26. april 2007 - 21:26 #7
Lige præcist!
Tusind tak :D
Avatar billede zurekk Nybegynder
26. april 2007 - 21:26 #8
Hov, forkert tråd, sorry!
Avatar billede vix-mix Nybegynder
26. april 2007 - 22:05 #9
hehe det er i orden ;)
Avatar billede vix-mix Nybegynder
26. april 2007 - 23:00 #10
så fik jeg lavet så det passer, tak for hjælpen jakobdo, der var lige en fejl i din version.

så her er den korrekte:

if (isset($_FILES['upfile']['name']) && $_FILES['upfile']['name'] !="")
{
    if(is_uploaded_file($_FILES['upfile']['tmp_name']))
    {
        $sti = "../img/vine/";
        $uldir = $sti;
        $ulfile = $uldir.basename($_FILES['upfile']['name']);
        $thumbLargeFile = $uldir."thumb_large_".basename($_FILES['upfile']['name']);
        $thumbSmallFile = $uldir."thumb_".basename($_FILES['upfile']['name']);
        move_uploaded_file($_FILES['upfile']['tmp_name'], $ulfile);
        resize($ulfile,$thumbLargeFile,200,509);
        resize($ulfile,$thumbSmallFile,35,85);
    }
    $thumb = "img/vine/thumb_" . $_FILES['upfile']['name'];
    $pic = "img/vine/thumb_large_" . $_FILES['upfile']['name'];
    $large_pic = "img/vine/" . $_FILES['upfile']['name'];
}
Avatar billede vix-mix Nybegynder
26. april 2007 - 23:01 #11
smid et svar :)
Avatar billede jakobdo Ekspert
27. april 2007 - 08:28 #12
Svar!
Avatar billede vix-mix Nybegynder
03. maj 2008 - 23:51 #13
undskyld sene godkend :-O

-lukket-
Avatar billede jakobdo Ekspert
04. maj 2008 - 01:29 #14
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