Gå til innhold

PHP script som lager tumbs av bilder


Anbefalte innlegg

Ja. Emne sier vel det meste.

 

Hvordan lager jeg et slikt script?

Finnes det en function som gjør dette? Kunne ikke finne noe...

 

Edit: Den postet for fort...

Endret av Scix
Lenke til kommentar
Videoannonse
Annonse

Evt gjør denne snutten jobben for deg (Krever ImageMagick installert på server):

exec("convert -resize $thumbsizex$thumbsize $img_source $img_savepath")

hvor $thumsize er maksstørrelse på thumbnails, $img_source er bildet som skal lages thumbnail av, og $img_savepath er det nye bildet.

 

PS x mellom $thumsize er et gangetegn som i 75x75

Endret av kakkle
Lenke til kommentar

if(is_uploaded_file($_FILES['bilde']['tmp_name']) && $_FILES['bilde']['error'] == 0)
{

$filtype = '.jpg';
$filnavn = str_replace($filtype, '', $_FILES['filen']['name']);
$filthumb = $filnavn .'_thumb';
$mappe = bilder/
$filstørrelse = getimagesize($_FILES['bilde']['tmp_name']);


if($_FILES['bilde']['type'] == 'image/jpg' || $_FILES['bilde']['type'] == 'image/jpeg' || $_FILES['bilde']['type'] == 'image/pjpeg')
{$flyttbilde = imagecreatefromjpeg($mappe . $filnavn . $type);}

$thumbbilde = imagecreatetruecolor(($filstørrelse[0] / 100) * 25, ($filstørrelse[1] / 100) * 25);

imagecopyresampled($thumbbilde, $flyttbilde, 0, 0, 0, 0,
($filstørrelse[0] / 100) * 25, ($filstørrelse[1] / 100) * 25,
$filstørrelse[0], $filstørrelse[1]);

if($_FILES['bilde']['type'] == 'image/jpg' || $_FILES['bilde']['type'] == 'image/jpeg' || $_FILES['bilde']['type'] == 'image/pjpeg')

{imagejpeg($thumbbilde, $mappe . $filthumb . $type);
print("Bildet er nå lastet opp.");}

}
else
{print ("Bilde ble ikke lastet opp.");}

 

Her er en liten kode.. Må sikkert endres på litt før den skal funke ortlig. ;)

Endret av Mellet
Lenke til kommentar

Merk at hvis du skal generere thumbnails på serveren, så pass på å lagre thumbnails fortløpende og ikke alltid generere dem "on the fly". Bruk istedet de du allerede har lagret. Hvis ikke så vil du fort oppleve ganske syke load-numbers på serveren din.

Lenke til kommentar

Har laget en funksjon som beregner ny bildestørrelse basert på maksbegrensninger, både på bredde og høyde. Dvs. man spesifiserer en ramme thumbnailen skal passe i.

 

<?php
/**
Beregner ny størrelse på et bilde basert på maks bredde og maks høyde.
Bildet vil aldri få dimensjoner hvor ny bredde > maks bredde eller ny 
høyde > maks høyde. Returnerer et array med ny størrelse.
@author Rasmus
@param $width integer - orginal bredde
@param $height integer - orginal høyde
@param $max_width integer - maks bredde på det nye bildet
@param $max_height integer - maks høyde på det nye bildet
@return array('width'=>integer,'height'=>integer)
*/
function get_resized_size($width,$height,$max_width,$max_height){
   $new_width=0; $new_height=0;
   
   if ($height >= $width) {
       //Høyde størst beregning
       $new_width = round(($max_height / $height)*$width);
       $new_height = $max_height;
   }else {
       //Bredde størst beregning
       $new_width = $max_width;
       $new_height = round(($max_width / $width)*$height);
   }
   return array('width'=>$new_width,'height'=>$new_height);
}
?>

Lenke til kommentar
  • 3 uker senere...
Merk at hvis du skal generere thumbnails på serveren, så pass på å lagre thumbnails fortløpende og ikke alltid generere dem "on the fly". Bruk istedet de du allerede har lagret. Hvis ikke så vil du fort oppleve ganske syke load-numbers på serveren din.

Enig i at det går tregt, og serveren må jobbe. Jeg leier webhotell, så om serveren sliter eller ikke er ikke mitt problem. :D

 

Jeg bruker dette skriptet blant annet til å lage miniatyrbilder av bilder fra webkameraer. Da kan ikke bildene lagres som miniatyrer fortløpende. Det som også er litt dumt med fortløpende lagring av miniatyrer er at dersom du vil endre bilde til å bli 20px bredere så blir det mye å endre på, men dersom en har tid og IQ så kan vel dette problemet løses også... :D

Lenke til kommentar
if(is_uploaded_file($_FILES['bilde']['tmp_name']) && $_FILES['bilde']['error'] == 0)
{

$filtype = '.jpg';
$filnavn = str_replace($filtype, '', $_FILES['filen']['name']);
$filthumb = $filnavn .'_thumb';
$mappe = bilder/
$filstørrelse = getimagesize($_FILES['bilde']['tmp_name']);


if($_FILES['bilde']['type'] == 'image/jpg' || $_FILES['bilde']['type'] == 'image/jpeg' || $_FILES['bilde']['type'] == 'image/pjpeg')
{$flyttbilde = imagecreatefromjpeg($mappe . $filnavn . $type);}

$thumbbilde = imagecreatetruecolor(($filstørrelse[0] / 100) * 25, ($filstørrelse[1] / 100) * 25);

imagecopyresampled($thumbbilde, $flyttbilde, 0, 0, 0, 0,
($filstørrelse[0] / 100) * 25, ($filstørrelse[1] / 100) * 25,
$filstørrelse[0], $filstørrelse[1]);

if($_FILES['bilde']['type'] == 'image/jpg' || $_FILES['bilde']['type'] == 'image/jpeg' || $_FILES['bilde']['type'] == 'image/pjpeg')

{imagejpeg($thumbbilde, $mappe . $filthumb . $type);
print("Bildet er nå lastet opp.");}

}
else
{print ("Bilde ble ikke lastet opp.");}

 

Her er en liten kode.. Må sikkert endres på litt før den skal funke ortlig. ;)

Denne koden er vel kun for jpg familien. Har noen eksempler på hvordan man kan legge til i koden at den også legger til gif, png bilder?

Lenke til kommentar
Da må du endre validering av bildetypen, imagecreatefromjpeg og imagejpeg.

Dette bør være piece of cake. Noen enkle if-setninger ordner det. Har hatt problemer med spesielle bilder hvor bildetypen ikke blir funnet. Har begynt å sjekke på extension i stedet for MIME... Noen andre som har opplevd dette?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...