Gå til innhold

Anbefalte innlegg

Her er en funksjon som tar inn en katalog, et bilde i katalogen og ønsket høyde på thumbnail.

Hvis thumbnailen allerede finnes vises den, hvis ikke lages det en ny thumbnail-fil med navn thm_filnavnet.png og ønsket høyde, og denne vises.

Det er viktig at katalogene med bilder er mulige å skrive til.

Skriptet kan med hell modifiseres slik at det blir bedre på å fange opp feil, her jeg bruker det er det kun jeg som legger ut bilder slik at risikoen for feil inndata er så godt som fraværende.

 

Posten ligger også i tråden "PHP kode som andre kanskje kan bruke.", men siden dette er en funksjon mange ønsker seg tenkte jeg det var greit å poste den under egen topic også.

 

function thumb($katalog, $bilde, $hoyde)
{

      $fil = $katalog . $bilde;
      $litenfil = $katalog . "thm_" . $bilde;

      if(!is_file($litenfil) && is_file($fil))
      {

              $sjekk = explode(".",$bilde);
              $size = getimagesize($fil); // Finner dimensjonene på bildet

              $faktor = $hoyde / $size[1];
              $bredde = round($size[0] * $faktor);

              if($bredde > 150)
              {
                      $bredde = 150;
                      $xfaktor = $bredde / $size[0];
                      $hoyde = $xfaktor * $size[1];
              }

              //Sjekker for gyldige filtyper
              switch (strtolower($sjekk[1]))
              {
              case "jpg":
                      $bilde = imagecreatefromjpeg("$fil");
                      break;
              case "gif":
                      $bilde = imagecreatefromgif("$fil");
                      break;
              case "png":
                      $bilde = imagecreatefrompng("$fil");
                      break;
              }

//Lager grunnbilde for thumbnail
              $nytt = imagecreatetruecolor($bredde, $hoyde);

              imagecopyresampled ($nytt,$bilde, 0, 0, 0, 0, $bredde, $hoyde, $size[0], $size[1]);

              imagepng($nytt,"$litenfil");
              chmod("$litenfil", 0755);  // octal; correct value of mode
      }

echo "<img src='$litenfil'>";

}

Lenke til kommentar
Videoannonse
Annonse

Hvorfor poster du det her også?

Ønsker du tips til forbedringer?

Det er noen ting der du kan fikse, i alle fall før du publiserer det.

 

Edit: skrev en edit her, men det var kommet inn mange poster så lage en post av den.

Endret av ????????
Lenke til kommentar
Er dette noe som bare fungere på *nix servere? for jeg fikk dette ikke til å virke på min apache server som kjører under win2k.

Noen rutiner som mangler eller noe? (hos meg selvf :p)

Grafikkbibliotekene i PHP må være installert, bortsett fra det skal det fungere overalt. Har bare prøvd det på *nix-servere, så er ikke sikker på hvordan det oppfører seg på en Win-server.

Lenke til kommentar

Den hørtes kanskje litt "sur" ut, men var ikke ment så ille. ;)

Her er et par tips:

- hva hvis bildet ikke er png, jpg eller gif?

- gjør størrelsen lettere å endre

- chmod 644 holder lenge

- hvorfor exploder du?

det er en dårlig måte å sjekke filtype på, du bruker allerede getimagesize() der har du det du trenger, ellers kan du bruke mime_content_type()

 

Du vet at du kan bruke æøå i variabelnavn, som f.eks. $høyde?

 

Jeg har ikke sjekket selve funksjonene, men regner med at de fungerer bra siden du har publisert det.

 

 

 

 

 

EDIT:

Testet scriptet ditt litt, du burde gjøre flere endringer.

Du overskriver muligheten til å bestemme høyden, ved mindre den er tilpasset en mindre verdi enn forholdet mot bredden - og hva er da poenget med å definere en høyde når bildet ikke kan bli høyere enn det bredden tillater?

 

EDIT #2:

Det er ikke bare negativt ment - scriptet er på vei ;)

Hvis du tar en kikk på http://no.php.net/manual/en/function.imagecopyresampled.php så finner du mange ferdige scripts for å tilpasse størrelsen på bilder.

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

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