Arkiv for php

Hvordan lage miniatyrbilder Bruke PHP

Postet i funksjoner , php av ShortLikeAFox den 22 juli 2008

Så du vil opprette et miniatyrbilde fra et gitt bilde ... PHP gjør denne oppgaven lett. Jeg først skrev funksjonen nedenfor for å håndtere bilder lastet opp av brukere på et nettsted jeg hjelpe administrere. Lastet opp bilder til dette nettstedet kan være JPEG, PNG eller GIF, så jeg måtte skrive en funksjon for å håndtere alle tre. Denne koden er opprinnelig basert off av en funksjon som finnes på webcheatsheet.com

Hvordan gjøre det:

funksjon createThumbs ($ pathToImages, $ fname, $ pathToThumbs, $ thumbWidth)
(

/ / Parse banen for forlengelse

$ Info = pathinfo ($ pathToImages. $ Fname);
/ / Fortsetter bare hvis dette er et JPEG-bilde
($info['extension']) == 'jpeg') ) if ((strtolower ($ info ['utvidelse']) == 'jpg') | | (strtolower ($ info ['utvidelse']) == "JPEG"))
(

/ / Load image og få bildestørrelse
$ Img = imagecreatefromjpeg ("($ pathToImages) ($ fname)");
$ Width = imagesx ($ img);
$ Height = imagesy ($ img);

/ / Beregner miniatyrstørrelsen
$ New_width = $ thumbWidth;
$ New_height = floor ($ høyde * ($ thumbWidth / $ bredde));

/ / Opprette en ny midlertidig bilde
$ Tmp_img = imagecreatetruecolor ($ new_width, $ new_height);

/ / Kopiere og endre størrelse på gamle bilete i nytt bilde
imagecopyresized ($ tmp_img, $ img, 0, 0, 0, 0, $ new_width, $ new_height, $ bredde, $ høyde);

/ / Lagre bildene i en fil
imagejpeg ($ tmp_img, "($ pathToThumbs) ($ fname)");

)

if (strtolower ($ info ['utvidelse']) == 'gif')
(

/ / Load image og få bildestørrelse
$ Img = imagecreatefromgif ("($ pathToImages) ($ fname)");
$ Width = imagesx ($ img);
$ Height = imagesy ($ img);

/ / Beregner miniatyrstørrelsen
$ New_width = $ thumbWidth;
$ New_height = floor ($ høyde * ($ thumbWidth / $ bredde));

/ / Opprette en ny midlertidig bilde
$ Tmp_img = imagecreatetruecolor ($ new_width, $ new_height);

/ / Kopiere og endre størrelse på gamle bilete i nytt bilde
imagecopyresized ($ tmp_img, $ img, 0, 0, 0, 0, $ new_width, $ new_height, $ bredde, $ høyde);

/ / Lagre bildene i en fil
imagegif ($ tmp_img, "($ pathToThumbs) ($ fname)");

)

if (strtolower ($ info ['utvidelse']) == 'png')
(

/ / Load image og få bildestørrelse
$ Img = imagecreatefrompng ("($ pathToImages) ($ fname)");
$ Width = imagesx ($ img);
$ Height = imagesy ($ img);

/ / Beregner miniatyrstørrelsen
$ New_width = $ thumbWidth;
$ New_height = floor ($ høyde * ($ thumbWidth / $ bredde));

/ / Opprette en ny midlertidig bilde
$ Tmp_img = imagecreatetruecolor ($ new_width, $ new_height);

/ / Kopiere og endre størrelse på gamle bilete i nytt bilde
imagecopyresized ($ tmp_img, $ img, 0, 0, 0, 0, $ new_width, $ new_height, $ bredde, $ høyde);

/ / Lagre bildene i en fil
imagepng ($ tmp_img, "($ pathToThumbs) ($ fname)");

)

)

Hvordan dette fungerer

Funksjonen createThumbs tar fire argumenter.

  • $ PathToImages -> Stien til mappen bildet filen er i. Det kan se ut omtrent som dette: / home / content / brukernavn / html / list / opplastninger /
  • $ Fname -> Filnavnet: pic1.gif, johnny.jpg, etc ...
  • $ PathToThumbs -> Stien til mappen du vil at miniatyrbildet å være i. Du IKKE vil at denne skal være den samme banen som $ pathToImages, fordi miniatyrbilde vil ha samme navn som det opprinnelige bildet.
  • $ ThumbWidth -> Det bredden du vil at bildene skal være i piksler.

En viktig merke til at jeg bør gjøre her er at denne funksjonen har ingenting på plass, andre enn den filtypen sjekk, for å sikre at bildefilene inneholder noe skadelig. Siden filene createThumbs () arbeider med har allerede blitt lastet opp det antas at filene har blitt skikkelig gransket.

Det første createThumbs () gjør er å ringe pathinfo () . pathinfo () bryter med deler av en bane i en matrise. Dette er nyttig for oss, fordi vi trenger til filtypen i riktig opprette miniatyrbilde. Neste createThumbs () sjekker for å se om vi har å gjøre med en jpeg. Hvis den opprinnelige filen er en jpeg createThumbs oppretter et nytt bilde basert på det originale bildet med imagecreatefromjpeg () . Det neste trinnet er å få bredden og høyden på dette bildet ( imagesx () , imagesy () ). Bruke $ thumbWidth og forholdet mellom den opprinnelige bredde og høyde createThumbs () setter den nye bredde og høyde på miniatyrbildet. Ved hjelp av disse nye forhold createThumbs () oppretter et "tomt" bilde som vil være den samme bredde og høyde på et av bildene med imagecreatetruecolor () . imagecopyresized () brukes til å endre størrelsen på bildet og lagre det i "blanke" nettopp opprettet. imagecopyresized () kan virke som det tar mange parametre, men hvis du tar en titt på dokumentasjonen det er virkelig ikke så komplisert. Nå som bildene eksisterer som en ekte fargebilde alle createThumbs trenger å gjøre er å konvertere filen til en jpeg. For å gjøre dette imagejpeg () kalles.

Det er hvordan funksjonen fungerer for JPEG. Det er minimale forskjeller på. PNGs og. Gifs.

Hvordan skrive nettleser-spesifikk kode med PHP

Skrevet i php av ShortLikeAFox den 21 juli 2008

Så du ønsker å skrive kode som bare vises på enkelte nettlesere ... Det er flere grunner til å ønske å gjøre dette. Første gang jeg selv trengte å gjøre dette skjedde da jeg prøvde å legge ned en mp3 på en bestemt side. Av en eller annen grunn fikk jeg ikke skrive koden slik at mp3 ville spille på nettlesere jeg teste på (IE, Firefox og Opera), og validere på samme tid. Hvis jeg husker riktig, var det Internet Explorer som var årsak til problemet. Løsningen jeg kom opp med var å bruke litt PHP for å finne ut når brukeren bruker IE, og så legge ned i mp3 i ikke-gyldig kode hvis det var tilfelle.

Denne løsningen førte til mp3 spiller alltid riktig, og siden alltid validere, fordi W3C validator aldri identifiserer seg som IE. Dette kunne ikke være det mest etisk måte å nå W3C etterlevelse, men det fungerer.

En annen gang jeg husker å måtte skrive nettleser-spesifikk kode er når jeg hadde et problem med IE 6 ikke vis mine. PNG-bilder på riktig måte. Jeg googled rundt og funnet et par løsninger på problemet, men begge endte opp med å rote til det totale lag steder på sidene mine. I stedet for feilsøking som problem, gikk jeg med den raske løsningen, og bestemte seg for å vise GIF-filer. Når brukeren har IE 6. Hvis brukeren har en annen nettleser som hadde. PNG problemer jeg skjønte at var for dårlig for ham.

Hvordan gjøre det:

Først må du skrive en liten linje med kode for å finne ut hva din nettleser brukeren har. Her er hvordan du gjør det med PHP:

  • 'HTTP_USER_AGENT' ]; $ VisitorsOS = $ _SERVER ['HTTP_USER_AGENT'];

Her er tre eksempler på hva $ visitorsOS kan se ut

  • Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1, SV1;. NET CLR 1.0.3705;. NET
  • Opera/9.51 (Windows NT 5.1, U, pl)
  • Mozilla/5.0 (Windows; U; Windows NT 5.1, en-US; rv: 1.9) Gecko/2008052906 Firefox

Den første brukeren har Internet Explorer 6, den andre 9,51 Opera, og den tredje Firefox.

Nå som vi vet mer informasjon enn vi egentlig trenger om besøkendes datamaskin må vi legge denne informasjonen til god bruk. Si du ønsker å skrive kode som bare vises hvis brukeren kjører en versjon av Internet Explorer. I så fall vil du gjøre dette:

('MSIE',$visitorsOS)){ if (eregi ('MSIE', visitorsOS $)) (

Kode som bare vises hvis brukeren har IE

)

else (

Kode som vises i alle andre tilfeller

)

Jeg bruker eregi, en sak ufølsom regulært uttrykk kamp i stedet for ereg, en sak sensitiv vanlig uttrykk kamp. Jeg husker ikke om jeg gjør dette ut av paranoia, eller om jeg faktisk funnet en sak der Internet Explorer identifisert seg som MSIE. I begge tilfeller eregi skader det ikke slik at det er hva jeg bruker. Ønsker å skrive koden for spesifikke versjoner av IE vil bare kreve en liten endring. i stedet for ... (eregi ('MSIE' ...) Jeg ville bruke noe sånt som (eregi ('MSIE 6.0' ...) om jeg ville kode som bare dukket opp for MSIE 6.0.


«Forrige Side« Forrige Side Neste oppføringer »