Hur man gör miniatyrbilder med hjälp av PHP

Publicerad i funktioner, php av ShortLikeAFox den 22 juli 2008

Så du vill skapa en miniatyr av en viss bild ... PHP gör uppgiften lätt. Första gången jag skrev funktionen nedan för att hantera bilder som är uppladdade av användare på en plats jag hjälpa administrera. Uppladdade bilder till denna webbplats kan JPEG, pngs, eller gif-bilder, så jag var tvungen att skriva en funktion för att ta itu med alla tre. Denna kod är ursprungligen baserad på en funktion återfinns på webcheatsheet.com

Hur man gör:

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

/ / Analysera sökväg för utbyggnad

$ info = pathinfo ($ pathToImages. $ fname);
/ / Fortsätta endast om det är en JPEG-bild
($info['extension']) == ‘jpeg’) ) if ((strtolower ($ info [ 'förlängning']) == "jpg") | | (strtolower ($ info [ 'förlängning']) == "jpeg"))
(

/ / Load image och få bildstorlek
$ img = imagecreatefromjpeg ( "($ pathToImages) ($ fname)");
$ width = imagesx ($ img);
$ height = imagesy ($ img);

/ / Beräkna thumbnail storlek
$ new_width = $ thumbWidth;
$ new_height = floor ($ höjd * ($ thumbWidth / $ bredd));

/ / Skapa en ny tillfällig bild
$ tmp_img = imagecreatetruecolor ($ new_width, $ new_height);

/ / Kopiera och ändra storlek på gamla bilden till ny bild
imagecopyresized ($ tmp_img, $ img, 0, 0, 0, 0, $ new_width, $ new_height, $ width, $ höjd);

/ / Spara miniatyrbild i en fil
imagejpeg ($ tmp_img, "($ pathToThumbs) ($ fname)");

)

om (strtolower ($ info [ 'förlängning']) == "gif")
(

/ / Load image och få bildstorlek
$ img = imagecreatefromgif ( "($ pathToImages) ($ fname)");
$ width = imagesx ($ img);
$ height = imagesy ($ img);

/ / Beräkna thumbnail storlek
$ new_width = $ thumbWidth;
$ new_height = floor ($ höjd * ($ thumbWidth / $ bredd));

/ / Skapa en ny tillfällig bild
$ tmp_img = imagecreatetruecolor ($ new_width, $ new_height);

/ / Kopiera och ändra storlek på gamla bilden till ny bild
imagecopyresized ($ tmp_img, $ img, 0, 0, 0, 0, $ new_width, $ new_height, $ width, $ höjd);

/ / Spara miniatyrbild i en fil
imagegif ($ tmp_img, "($ pathToThumbs) ($ fname)");

)

om (strtolower ($ info [ 'förlängning']) == "png")
(

/ / Load image och få bildstorlek
$ img = imagecreatefrompng ( "($ pathToImages) ($ fname)");
$ width = imagesx ($ img);
$ height = imagesy ($ img);

/ / Beräkna thumbnail storlek
$ new_width = $ thumbWidth;
$ new_height = floor ($ höjd * ($ thumbWidth / $ bredd));

/ / Skapa en ny tillfällig bild
$ tmp_img = imagecreatetruecolor ($ new_width, $ new_height);

/ / Kopiera och ändra storlek på gamla bilden till ny bild
imagecopyresized ($ tmp_img, $ img, 0, 0, 0, 0, $ new_width, $ new_height, $ width, $ höjd);

/ / Spara miniatyrbild i en fil
imagepng ($ tmp_img, "($ pathToThumbs) ($ fname)");

)

)

Hur detta fungerar

Den fungerar createThumbs tar fyra argument.

  • $ pathToImages -> Den sökvägen till den mapp filen är i. Det kan se ut ungefär så här: / home / innehåll / användarnamn / html / lista / inlagda /
  • $ fname -> Filnamnet: pic1.gif, johnny.jpg, osv ...
  • $ pathToThumbs -> Den sökvägen till den mapp du vill att miniatyrbild att vara i. Du vill inte att detta skall vara den samma väg som $ pathToImages, eftersom miniatyrbild kommer att ha samma namn som den ursprungliga bilden.
  • $ thumbWidth -> Den bredd som du vill att minibilden för att vara i pixlar.

En viktig anmärkning att jag borde göra här är att denna funktion inte har något på plats, utom filändelsen kontrollera, för att säkerställa att bildfiler innehåller inget skadligt. Eftersom filerna createThumbs () arbetar med har redan lagt upp det antas att filerna har korrekt granskas.

Det första som createThumbs () gör är att ringa pathinfo (). pathinfo () bryter mot delar av en väg i en matris. Detta är användbart för oss, eftersom vi behöver filändelsen att kunna skapa tumnagel. Nästa createThumbs () kontroller för att se om vi har att göra med en jpeg. Om den ursprungliga filen är en jpeg createThumbs skapar en ny bild som bygger på den ursprungliga bilden med imagecreatefromjpeg (). Nästa steg är att få bredd och höjd på den här bilden (imagesx (), imagesy ()). Använda $ thumbWidth och andelen av det ursprungliga bredd och höjd createThumbs () innehåller den nya bredd och höjd på miniatyrbild. Att använda dessa nya nyckeltal createThumbs () skapar en "tom" bild som kommer att vara samma bredd och höjd på minibilden med imagecreatetruecolor (). Imagecopyresized () används för att ändra storlek på bilden och spara den i "tomma" just har skapat. imagecopyresized () kan verka som det tar en hel del parametrar, men om du tittar på den dokumentation som den är verkligen inte så komplicerat. Nu när thumbnail existerar som en sann färgbild alla createThumbs behöver göra är att konvertera filen till en jpeg. För att göra detta imagejpeg () anropas.

Det är hur det fungerar för JPEG. Det är minimala skillnader för. Pngs och. Gifs.

| Kommentarer