Gå til innhold

PHP script som lager tumbs av bilder


Anbefalte innlegg

Skrevet (endret)

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
Videoannonse
Annonse
Skrevet (endret)

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
Skrevet (endret)

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
Skrevet

Jeg har pakket ned koden. Kan lastes ned her:

 

Miniatyr

 

Purpose: class to handle image resize; can output to file or directly to browser

Author: Yuriy Horobey, [email protected]

Property: Horobey Freelance & Telecommuting

URL: http://horobey.com

Date: 12.04.2003

 

Jeg har lagt til noe kode slik at denne også kan hente inn bilder fra liker, og ikke bare filer som er lagret på egen server.

Skrevet

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.

Skrevet

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);
}
?>

  • 3 uker senere...
Skrevet
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

Skrevet
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?

Skrevet

Bytt ut imagecreatefromjpeg med imagecreatefromgif og imagecreatefrompng. Deretter bytter du ut imagejpeg med imagegif og imagepng.

 

Håper du bruker PHP-manualen: Last ned PHP-manual (10 MB) Her finner du alle funksjoner og forklaring og diverse snadder... :thumbup:

Skrevet
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?

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...