Avatar billede kodak Mester
04. december 2007 - 15:59 Der er 19 kommentarer og
1 løsning

Upload billede more size

Jeg søger et script hvor jeg kan uploade et billede
give det et fornavn (efter belikkenhed på min side) og den selv ændre billeder til 3 forskellige størelser med hver sit efternavn.

Der skal i alt være 3 billeder med følgendene navne:
nu.jpg
nu-forside.jpg
nu-thums.jpg
eller:
naeate.jpg
naeate-forside.jpg
naeate-thums.jpg

Størelserne og navne kanses her:
(Stor)    389 x 550 (efternavn "")
(Mellem) 305 x 431 (efternavn "-forside")
(Lille)    194 x 274 (efternavn "-thumb")

D.v.s. Jeg kommer ind på en side,
trykker "gennemse" vælger billede,
Skriver ønskede placering
trykker "færdig"
den smider 3 billeder med hvert sit navn i mapper".../plakater/"
er der et billede med samme navn i mappen skal den overskrives.
Avatar billede jakobdo Ekspert
04. december 2007 - 20:48 #1
Hvis du tager et kig i php artikler, så finder du:

Simple PHP Upload og Billede Resize.
Disse 2 skal blot sættes sammen, så har du kode der giver dig hvad ud efterspørger.
Avatar billede mix Nybegynder
21. december 2007 - 20:02 #2
Hej Kodak,

Løsning er faktisk ikke så svær.
Du laver en upload side. Hvor du uploader et billed dette input felt kunne du kalde "imageField". Nu ville du kunne bruge dette php script.


Jeg har ikke testet min php script, men det burde løse din opgave.

<?php

uploadImage("imageField");


function uploadImage($inputfield){
   
      // Orindlige filnavn

  $filename = $_FILES[$inputfield]['name'];



  // Middlertidlig filnavn (DETTE ER FAST!)

  $tmp_filename =  $_FILES[$input_name]['tmp_name'];


  // Lav det store billed
  resizeToFile($tmp_filename, "../plakater/$filename" ,389,550 );

  // Lav det mellem billed
  resizeToFile($tmp_filename, "../plakater/" . str_replace(".jpg","-forside.jpg",$filename) ,305,431);
 
  // Lav det lille billed
  resizeToFile($tmp_filename, "../plakater/" . str_replace(".jpg","-thumb.jpg",$filename) ,194,274);
         
}



function resizeToFile ($sourcefile,$targetfile,$dest_x,$dest_y){

/* Hent dimensions fra kilde billedet */

  $picsize=getimagesize("$sourcefile");



  $source_x  = $picsize[0];

  $source_y  = $picsize[1];

  $source_id = imageCreateFromJPEG("$sourcefile");



/* Lav et nyt billed objekt */

  $target_id=imagecreatetruecolor($dest_x, $dest_y);



/*  Resize orginal billedet og kopiere det til det nye billed Object */

  $target_pic=imagecopyresampled(

                                  $target_id,

                                  $source_id,

                                  0,

                                  0,

                                  0,

                                  0,

                                  $dest_x,

                                  $dest_y,

                                  $source_x,

                                  $source_y

                                );



/* Opret billed objektet, med angivet kvalitet og gem det */

  imagejpeg ($target_id,$targetfile,90);

  return true;

}

?>


Håber det hjælper

//Michael
Avatar billede kodak Mester
06. juni 2008 - 21:42 #3
mix >> Jeg har ikke den storer mulighed for at smide et billede ind.
Der mangler noget form m.m.
Avatar billede jakobdo Ekspert
07. juni 2008 - 05:39 #4
kodak: Hvis du kigger denne artikel, der er alt hvad du søger: http://www.eksperten.dk/artikler/1200
Avatar billede jakobdo Ekspert
07. juni 2008 - 05:39 #5
Du skal bare kalde resize() 3 gange og ikke kun 1 som i min artikel.
Avatar billede kodak Mester
13. juni 2008 - 00:03 #6
Nu harjeg kikket på
http://www.eksperten.dk/artikler/1200
og http://www.eksperten.dk/artikler/1098
Men jeg har stadig ikke fået din more size kode til at virke.
Avatar billede jakobdo Ekspert
13. juni 2008 - 06:37 #7
Hvad mener du med more size ?
At du skal have flere størrelser ?
Avatar billede jakobdo Ekspert
13. juni 2008 - 06:42 #8
Test lige denne kode:

<?php
//SETTINGS
$uploadDir        = 'upload/'; //Bibliotek, hvor filer uploades til - husk chmod 777
$allowedFileTypes = array('jpg','gif','png'); //Hvilke filer vil vi acceptere bliver uploadet?
//THUMBS SETTINGS
$thumbDir        = 'thumbs/'; //Bibliotek, hvor thumbs gemmes - husk chmod 777
$thumbPrefix1    = '';  //Hvad skal tilføjes til originalt filnavn?
$thumbPrefix2    = '-forside';  //Hvad skal tilføjes til originalt filnavn?
$thumbPrefix3    = '-thumb';  //Hvad skal tilføjes til originalt filnavn?
$thumbHeight1    = 389;      //Thumb højde
$thumbWidth1      = 550;      //Thumb bredde
$thumbHeight2    = 305;      //Thumb højde
$thumbWidth2      = 431;      //Thumb bredde
$thumbHeight3    = 194;      //Thumb højde
$thumbWidth3      = 274;      //Thumb bredde

//Funktioner som bruges:
function getExtension($filename){
    return strtolower( pathinfo( $filename, PATHINFO_EXTENSION ) );
}

function resize( $filename, $newfilename, $maxw, $maxh, $quality=85 )
{
  $extension = getExtension($filename);
  switch($extension)
  {
    case 'jpeg':
    case 'jpe':
    case 'jpg':
      $srcim = imagecreatefromjpeg( $filename );
      break;
    case 'gif':
      $srcim = imagecreatefromgif( $filename );
      break;
    case 'png':
      $srcim = imagecreatefrompng( $filename );
      break;
    default:
      return false;
  }
  $ow = imagesx( $srcim );
  $oh = imagesy( $srcim );
  $wscale = $maxw / $ow;
  $hscale = $maxh / $oh;
  $scale = min( $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($extension)
  {
    case 'jpeg':
    case 'jpe':
    case 'jpg':
      imagejpeg( $dstim, $newfilename, $quality );
      break;
    case 'gif':
      imagegif( $dstim, $newfilename );
      break;
    case 'png':
      $png_q = floor( abs( $quality / 10 - 9.9 ) );
      imagepng( $dstim, $newfilename, $png_q );
      break;
    default:
      return false;
  }
  imagedestroy( $dstim );
  imagedestroy( $srcim );
  return file_exists($newfilename);
}

//Er der trykket på Upload file knappen?
if(isset($_POST['myUpload']))
{
  //Har vi en fil?
  if(is_uploaded_file($_FILES['myFile']['tmp_name']))
  {
    //Filendelse
    $extension = getExtension($_FILES['myFile']['name']);
   
    //Er filen en af de filer vi gerne vil have?
    if(in_array($extension,$allowedFileTypes))
    {
      //Vi flytter filen fra tmp til vores UPLOADDIR
      if(move_uploaded_file($_FILES['myFile']['tmp_name'],$uploadDir . basename($_FILES['myFile']['name'])))
      {
          $resize1 = resize($uploadDir . basename($_FILES['myFile']['name']), $thumbDir . $thumbPrefix1 . basename($_FILES['myFile']['name']), $thumbWidth1, $thumbHeight1);
          $resize2 = resize($uploadDir . basename($_FILES['myFile']['name']), $thumbDir . $thumbPrefix2 . basename($_FILES['myFile']['name']), $thumbWidth2, $thumbHeight2);
          $resize3 = resize($uploadDir . basename($_FILES['myFile']['name']), $thumbDir . $thumbPrefix3 . basename($_FILES['myFile']['name']), $thumbWidth3, $thumbHeight3);
          if($resize1 && $resize2 && $resize3)
              echo '<h3 style="color:green;">File ('.basename($_FILES['myFile']['name']).') uploaded and resized succesfully</h3>';
          }else{
            echo '<h3 style="color:red;">File ('.basename($_FILES['myFile']['name']).') uploaded succesfully, but resize failed</h3>';
        }
      }
      else
      {
        echo '<h3 style="color:red;">Error - unable to upload file: '.basename($_FILES['myFile']['name']).'</h3>';
      }
    }
    else
    {
      echo '<h3 style="color:red;">Wrong filetype, allowed filetypes are: ('.implode(',',$allowedFileTypes).')</h3>';
    }
  }
  else
  {
    echo '<h3 style="color:red;">No file selected<h3>';
  }
}

//Vores form
echo '<form action="upload.php" method="post" enctype="multipart/form-data">';
echo 'File ('.implode(',',$allowedFileTypes).'): <input type="file" name="myFile"><br />';
echo '<input type="submit" name="myUpload" value="Upload file">';
echo '</form>';

?>
Avatar billede kodak Mester
13. juni 2008 - 11:44 #9
More size = flerer billeder med hver sin størelse.
Din
http://www.eksperten.dk/artikler/1200
Virker fint men der bør være 2 størelser mer.
Avatar billede kodak Mester
13. juni 2008 - 11:47 #10
iden i koden er korekt men den vil ikke vises online.
Avatar billede jakobdo Ekspert
13. juni 2008 - 12:10 #11
<?php
//http://www.eksperten.dk/spm/808877

//SETTINGS
$uploadDir        = 'upload/'; //Bibliotek, hvor filer uploades til - husk chmod 777
$allowedFileTypes = array('jpg','gif','png'); //Hvilke filer vil vi acceptere bliver uploadet?
//THUMBS SETTINGS
$thumbDir        = 'upload/'; //Bibliotek, hvor thumbs gemmes - husk chmod 777
$thumbPrefix1    = '';  //Hvad skal tilføjes til originalt filnavn?
$thumbPrefix2    = '-forside';  //Hvad skal tilføjes til originalt filnavn?
$thumbPrefix3    = '-thumb';  //Hvad skal tilføjes til originalt filnavn?
$thumbHeight1    = 389;      //Thumb højde
$thumbWidth1      = 550;      //Thumb bredde
$thumbHeight2    = 305;      //Thumb højde
$thumbWidth2      = 431;      //Thumb bredde
$thumbHeight3    = 194;      //Thumb højde
$thumbWidth3      = 274;      //Thumb bredde

//Funktioner som bruges:
function getExtension($filename){
    return strtolower( pathinfo( $filename, PATHINFO_EXTENSION ) );
}

function resize( $filename, $newfilename, $maxw, $maxh, $quality=85 )
{
  $extension = getExtension($filename);
  switch($extension)
  {
    case 'jpeg':
    case 'jpe':
    case 'jpg':
      $srcim = imagecreatefromjpeg( $filename );
      break;
    case 'gif':
      $srcim = imagecreatefromgif( $filename );
      break;
    case 'png':
      $srcim = imagecreatefrompng( $filename );
      break;
    default:
      return false;
  }
  $ow = imagesx( $srcim );
  $oh = imagesy( $srcim );
  $wscale = $maxw / $ow;
  $hscale = $maxh / $oh;
  $scale = min( $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($extension)
  {
    case 'jpeg':
    case 'jpe':
    case 'jpg':
      imagejpeg( $dstim, $newfilename, $quality );
      break;
    case 'gif':
      imagegif( $dstim, $newfilename );
      break;
    case 'png':
      $png_q = floor( abs( $quality / 10 - 9.9 ) );
      imagepng( $dstim, $newfilename, $png_q );
      break;
    default:
      return false;
  }
  imagedestroy( $dstim );
  imagedestroy( $srcim );
  return file_exists($newfilename);
}

//Er der trykket på Upload file knappen?
if(isset($_POST['myUpload']))
{
  //Har vi en fil?
  if(is_uploaded_file($_FILES['myFile']['tmp_name']))
  {
    //Filendelse
    $extension = getExtension($_FILES['myFile']['name']);
 
    //Er filen en af de filer vi gerne vil have?
    if(in_array($extension,$allowedFileTypes))
    {
      //Vi flytter filen fra tmp til vores UPLOADDIR
      if(move_uploaded_file($_FILES['myFile']['tmp_name'],$uploadDir . basename($_FILES['myFile']['name'])))
      {
                $resize1 = resize($uploadDir . basename($_FILES['myFile']['name']), $thumbDir . $thumbPrefix1 . basename($_FILES['myFile']['name']), $thumbWidth1, $thumbHeight1);
                $resize2 = resize($uploadDir . basename($_FILES['myFile']['name']), $thumbDir . $thumbPrefix2 . basename($_FILES['myFile']['name']), $thumbWidth2, $thumbHeight2);
                $resize3 = resize($uploadDir . basename($_FILES['myFile']['name']), $thumbDir . $thumbPrefix3 . basename($_FILES['myFile']['name']), $thumbWidth3, $thumbHeight3);
                if($resize1 && $resize2 && $resize3){
                    echo '<h3 style="color:green;">File ('.basename($_FILES['myFile']['name']).') uploaded and resized succesfully</h3>';
                    echo '<h5>Thumb1</h5><img src="'.$thumbDir . $thumbPrefix1 . basename($_FILES['myFile']['name']).'" alt="thumb1" /><br />';
                    echo '<h5>Thumb2</h5><img src="'.$thumbDir . $thumbPrefix2 . basename($_FILES['myFile']['name']).'" alt="thumb2" /><br />';
                    echo '<h5>Thumb3</h5><img src="'.$thumbDir . $thumbPrefix3 . basename($_FILES['myFile']['name']).'" alt="thumb3" /><br />';
                }else{
                    echo '<h3 style="color:red;">File ('.basename($_FILES['myFile']['name']).') uploaded succesfully, but resize failed</h3>';
                }
      }
      else
      {
        echo '<h3 style="color:red;">Error - unable to upload file: '.basename($_FILES['myFile']['name']).'</h3>';
      }
    }
    else
    {
      echo '<h3 style="color:red;">Wrong filetype, allowed filetypes are: ('.implode(',',$allowedFileTypes).')</h3>';
    }
  }
  else
  {
    echo '<h3 style="color:red;">No file selected<h3>';
  }
}

//Vores form
echo '<form action="808877exp.php" method="post" enctype="multipart/form-data">';
echo 'File ('.implode(',',$allowedFileTypes).'): <input type="file" name="myFile"><br />';
echo '<input type="submit" name="myUpload" value="Upload file">';
echo '</form>';

?>

Og du kan se koden i funktion her: http://www.codebreaker.dk/exp/808877exp.php
Avatar billede kodak Mester
14. juni 2008 - 14:15 #12
Den er perfekt men vil gerne kunne vælge navnet på den.
Avatar billede jakobdo Ekspert
14. juni 2008 - 21:21 #13
Så skal du rette:

$thumbPrefix1 . basename($_FILES['myFile']['name']),
$thumbPrefix2 . basename($_FILES['myFile']['name']),
$thumbPrefix3 . basename($_FILES['myFile']['name']),
Avatar billede kodak Mester
15. august 2008 - 15:43 #14
ja det er forstået men vil gerne kunne ændre navn fra siden. en tekst box i enden der redigere navnet
Avatar billede jakobdo Ekspert
15. august 2008 - 16:00 #15
Så smid:

//Vores form
echo '<form action="808877exp.php" method="post" enctype="multipart/form-data">';
echo 'File ('.implode(',',$allowedFileTypes).'): <input type="file" name="myFile"><br />';
echo '<input type="text" name="fileName">';
echo '<input type="submit" name="myUpload" value="Upload file">';
echo '</form>';

og ret til:
$thumbPrefix1 . basename($_POST['fileName']),
$thumbPrefix2 . basename($_POST['fileName']),
$thumbPrefix3 . basename($_POST['fileName']),
Avatar billede kodak Mester
04. september 2008 - 22:47 #16
jakobdo >> SMID ET SVAR
Avatar billede jakobdo Ekspert
05. september 2008 - 06:54 #17
Svar
Avatar billede jakobdo Ekspert
05. september 2008 - 12:18 #18
Takker for point.
Avatar billede sebastianly Nybegynder
25. august 2011 - 14:41 #19
Glimrende kode, virker perfekt..
der er bare nogle ting jeg gerne vil ændre, men jeg er ikke god nok (nybegynder).
Måske du, Jakob kan hjælpe mig?


Jeg ville gerne have at alle $thumbPrefix var Sufixer i stedet for prefixer. altså i
stedet for at stå før filnavnet -> "thumb-billede.jpg, " skulle resultatet af en upload være
"billede-thumb.jpg" osv..

Jeg kunne godt tænke mig at filnavnet på alle uploadede foruden Prefix/suffix filer var dato:

noget i stil med "date("YmdHis") ?"
 
således at resultatet af en upload af f.eks filen "billede.jpg" bliver:

20110825145002.jpg
20110825145002-forside.jpg
20110825145002-thumbs.jpg

Som det fungerer nu, resizer scriptet billederne til de størrelser men tager ikke højde
for om billederne bliver pixeleret.
Scriptet resizer altså fx thumb3 til 500px i bredden uanset om det billedet der resizes og
kopieres måske kun er 200px bredt. Jeg ved ikke hvordan det kan løses?
Avatar billede jakobdo Ekspert
28. august 2011 - 17:05 #20
Alle dine "problemer" kan sagtens løses.
I resize() skal du blot flytte rundt på prefix og filnavnet.
Ligeledes kan du blot tilføje dato til filnavnet.
Det med om det bliver pixeleret, kan du lave, ved at kigge på filens dimensioner, inden du resizer.
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