Avatar billede -kenner- Nybegynder
16. august 2007 - 14:02 Der er 9 kommentarer

Upload og resize billede

Hej eksperter,

Hvordan resizer jeg et billede ved upload? Jeg har lavet upload koden, men hvis jeg nu vil have en lille version af billedet liggende i mappen "thumbs" på max 100x100px, hvorden koder jeg det ind i den eksisterende kode?

Source:

define( 'MAPPE', 'ejendomme/' );
                       
      if ( is_uploaded_file( $_FILES['fil']['tmp_name'] ) )
      {
        $tmpimg = MAPPE . uniqid('tmpimg') . uniqid('a');
        move_uploaded_file( $_FILES['fil']['tmp_name'], $tmpimg );
        if ( $inf = @getimagesize( $tmpimg ) )
        {
          if ( $inf[2] == 2 )
          {
              $unik = unik_traad();
                  mysql_query("insert into ejendomme (Unik, Titel, Beskrivelse, Status, Vej, Postnummer, Byen) values ('".$unik."', '".$_POST['Titel']."', '".$_POST['Beskrivelse']."', '".$_POST['Status']."', '".$_POST['Vej']."', '".$_POST['Postnummer']."', '".$_POST['Byen']."')") or die(mysql_error());
                  $result = mysql_query("select * from ejendomme where Unik = '$unik'") or die(mysql_error());
                $row = mysql_fetch_array($result);
              $id = $row['ID'];
              rename( $tmpimg, MAPPE . $id . '.jpg' );
              echo Godkendt("Ejendommen blev tilføjet!");
          }
          else
          {
                echo Fejl("Det er ikke et jpeg billede.");
              @unlink( $tmpimg );
          }
        }
        else
        {
          echo Fejl("Det er ikke et jpeg billede.");
        }
      }
Avatar billede michael_stim Ekspert
16. august 2007 - 14:04 #1
Kig under artikler. jakobdo har skrevet to gode artikler. Resize er den senest indkomne.
Avatar billede zurekk Nybegynder
16. august 2007 - 14:05 #2
jakobdo lavede dette script
tråd: http://www.eksperten.dk/spm/791668

Hvis du ikke ved hvordan du bruger det siger du bare til.

function resize( $filename, $newfilename, $maxw, $maxh )
{
    $types = array( 'jpeg', 'jpe', 'jpg', 'gif', 'png' );
    $ext = strtolower( pathinfo( $filename, PATHINFO_EXTENSION ) );
    switch($ext)
    {
        case 'jpeg':
        case 'jpe':
        case 'jpg':
            $srcim = imagecreatefromjpeg( $filename );
            break;
        case 'gif':
            $srcim = imagecreatefromgif( $filename );
            break;
        case 'png':
            $srcim = imagecreatefrompng( $filename );
            break;
        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 );
    imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
    switch($ext)
    {
        case 'jpeg':
        case 'jpe':
        case 'jpg':
            imagejpeg( $dstim, $newfilename, 85 );
            break;
        case 'gif':
            imagegif( $dstim, $newfilename );
            break;
        case 'png':
            imagepng( $dstim, $newfilename, 85 );
            break;
        return false;
    }
    imagedestroy( $dstim );
    imagedestroy( $srcim );
    return file_exists($newfilename);
}
Avatar billede -kenner- Nybegynder
16. august 2007 - 14:06 #3
Vil i ikke sætte det ind i min eksisterende kode, så jeg kan se hvordand et fungere. Jeg har lettere ved at se logikken i det på den måde :)
Avatar billede michael_stim Ekspert
16. august 2007 - 14:08 #4
Undskyld jakobdo. Mit svar kunne vist misforstås. Jeg ved ikke hvor mange artikler du har skrevet. Jeg mente selvfölgelig 2 gode artikler om upload og resize ;o)
Avatar billede zurekk Nybegynder
16. august 2007 - 14:23 #5
Noget i den her stil(ikke testet):


<?php

function resize( $filename, $newfilename, $maxw, $maxh )
    {
    $types = array( 'jpeg', 'jpe', 'jpg', 'gif', 'png' );
    $ext = strtolower( pathinfo( $filename, PATHINFO_EXTENSION ) );
    switch($ext)
    {
        case 'jpeg':
        case 'jpe':
        case 'jpg':
            $srcim = imagecreatefromjpeg( $filename );
            break;
        case 'gif':
            $srcim = imagecreatefromgif( $filename );
            break;
        case 'png':
            $srcim = imagecreatefrompng( $filename );
            break;
        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 );
    imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
    switch($ext)
    {
        case 'jpeg':
        case 'jpe':
        case 'jpg':
            imagejpeg( $dstim, $newfilename, 85 );
            break;
        case 'gif':
            imagegif( $dstim, $newfilename );
            break;
        case 'png':
            imagepng( $dstim, $newfilename, 85 );
            break;
        return false;
    }
    imagedestroy( $dstim );
    imagedestroy( $srcim );
    return file_exists($newfilename);
    }

if ( is_uploaded_file( $_FILES['fil']['tmp_name'] ) )
    {
    $tmpimg = MAPPE . uniqid('tmpimg') . uniqid('a');
    $thumb    = MAPPE . '/thumbs/' . uniqid('tmpimg') . uniqid('a');
    $ext    = strtolower( pathinfo( $_FILES['fil']['tmp_name'], PATHINFO_EXTENSION ) );
    move_uploaded_file( $_FILES['fil']['tmp_name'], $tmpimg );
   
    if( resize( $tmpimg, $thumb, 100, 100 ) ):
   
        $unik = unik_traad();
        mysql_query("insert into ejendomme (Unik, Titel, Beskrivelse, Status, Vej, Postnummer, Byen) values ('".$unik."', '".$_POST['Titel']."', '".$_POST['Beskrivelse']."', '".$_POST['Status']."', '".$_POST['Vej']."', '".$_POST['Postnummer']."', '".$_POST['Byen']."')") or die(mysql_error());
        $result = mysql_query("select * from ejendomme where Unik = '$unik'") or die(mysql_error());
        $row = mysql_fetch_array($result);
        $id = $row['ID'];
        rename( $tmpimg, MAPPE . $id . $ext );
        rename( $thumb, MAPPE . '/thumbs/' . $id . $ext );
        echo Godkendt("Ejendommen blev tilføjet!");
           
    endif;
    }

?>
Avatar billede jakobdo Ekspert
16. august 2007 - 19:46 #6
Det er sgu i orden gutter.
Uden at være til stede, er man alligevel til stede! :o)
Avatar billede -kenner- Nybegynder
20. august 2007 - 11:32 #7
Forsvandt JPEG valideringen ikke lidt i din omskrivning?
Avatar billede -kenner- Nybegynder
20. august 2007 - 11:36 #8
Jeg troede egentlig også at endif; var ASP
Avatar billede -kenner- Nybegynder
20. august 2007 - 12:12 #9
Jeg har smidt min JPEG validering ind i koden, men når jeg forsøger at uploade, så er det kun temping-filen der er blevet uploadet, og jeg får ikke nogen fest.

SOurce:

               
define( 'MAPPE', 'profilbilleder/' );
                     
      if ( is_uploaded_file( $_FILES['fil']['tmp_name'] ) )
      {
        $tmpimg = MAPPE . uniqid('tmpimg') . uniqid('a');
          $thumb = MAPPE . '/thumbs/' . uniqid('tmpimg') . uniqid('a');
        $ext    = strtolower( pathinfo( $_FILES['fil']['tmp_name'], PATHINFO_EXTENSION ) );
        move_uploaded_file( $_FILES['fil']['tmp_name'], $tmpimg );
       
        if ( $inf = @getimagesize( $tmpimg ) )
        {
          if ( $inf[2] == 2 )
          {
              if( resize( $tmpimg, $thumb, 100, 100 ) ){
                $id = $_SESSION['ID'];
                rename( $tmpimg, MAPPE . $id . $ext );
                rename( $thumb, MAPPE . '/thumbs/' . $id . $ext );
                echo Godkendt("Billedet blev tilføjet!");
              }else{
                  echo Fejl("Billedestørrelsen kunne ikke redigeres.");
                  }
          }
          else
          {
                echo Fejl("Det er ikke et jpeg billede.");
              @unlink( $tmpimg );
          }
        }
        else
        {
          echo Fejl("Det er ikke et jpeg billede.");
        }
      }
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