Arkiv för funktioner

Hur dela en bild i flera bilder med PHP

Publicerad i funktioner , php genom ShortLikeAFox den 26 Aug 2008

Så du vill bryta en stor bild i flera mindre bilder? Inga problem. Det kan tyckas som en obskyr problem, men det finns flera skäl du vill göra detta. Kanske vill du skapa en visuell skjutdörr pussel . Eller kanske du kör ett unikt WordPress tema . Eller kanske du vill skapa ett collage av något slag. Det spelar ingen roll varför du vill dela en bild i mindre bild, gör PHP denna uppgift lätt. Exemplet nedan endast behandlar JPEG. Ändra funktionen för att hantera andra typer av bilder skulle inte vara så svårt.

<? Php
/ / Denna funktion kommer att dela en bild i ett antal lika stora kolumner och rader.
funktion split_image ($ number_of_rows, $ number_of_cols, $ path_to_image, $ filnamn) (

/ / $ Number_of_rows = # rader du vill;
/ / $ Number_of_cols = Antal kolumner som du vill
/ / $ Path_to_image = sökvägen till den mapp bilden finns i, något liknande: / home / innehåll / användarnamn / html / list / tillagda /
/ / $ Filnamn = filnamnet på bilden: archery.jpg etc.

/ / Parse sökväg för utbyggnad
$file_name); $ Info = pathinfo ($ path_to_image. $ Filnamn);

/ / Se till att vi har att göra med en jpeg
($info[ 'extension' ]) == 'jpg' ) || ( strtolower ($info[ 'extension' ]) == 'jpeg' ) ){ if ((strtolower ($ info ['förlängning']) == "jpg") | | (strtolower ($ info ['förlängning']) == 'jpeg')) (

/ / Läsa in bilden och få bildstorlek
); $ Source = imagecreatefromjpeg ("($ path_to_image) ($ filnamn)");
$ Width = imagesx ($ source), / / Hitta den bredd
$ Height = imagesy ($ source), / / Hitta höjden
$ Segment_width = $ bredd / $ number_of_cols, / / Bestäm bredd av de enskilda segmenten
$ Segment_height = $ höjd / $ number_of_rows, / / Bestäm höjden på de enskilda segmenten

för ($ col = 0, $ col <$ number_of_cols, $ col + +)
(

för ($ rad = 0, $ rad <$ number_of_rows, $ rad + +)
(

, $col, $row ); $ Fn = sprintf ("img% 02d_% 02d.jpg", $ col, $ rad);
); //I print the image name here, so that the process shows itself as it runs echo ("$ fn"), / / jag skriva ut bilden namn här, så att processen visar sig som det strider
$ Im = @ imagecreatetruecolor ($ segment_width, $ segment_height);
imagecopyresized ($ im, $ källa, 0, 0, $ col * $ segment_width, $ rad * $ segment_height, $ segment_width, $ segment_height, $ segment_width, $ segment_height);
$ File = "test.jpg";
/ / Spara bilder
, 100 )) //The destination will be something like /home/content/c/h/d/images/$fn if (imagejpeg ($ im, "INSERT DESTINATION här", 100)) / / Destinationen kommer att bli något liknande / home / innehåll / c / h / d / images / $ fn

echo ("har gjorts! <br/>");

)

)

)

)

?>

Hur göra tumnagelbilder Använda PHP

Publicerad i funktioner , php genom ShortLikeAFox den 22 Juli 2008

Så du vill skapa en miniatyrbild av en viss bild ... PHP gör uppgiften lätt. Jag skrev första funktionen nedan för att hantera bilder uppladdade av användarna på en webbplats jag hjälpa administrera. Uppladdade bilder till denna webbplats kan JPEG, PNG eller GIF-filer, så jag var tvungen att skriva en funktion för att hantera alla tre. Denna kod är ursprungligen baserad bort av en funktion finns på webcheatsheet.com

Hur man gör:

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

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

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

/ / Läsa in bilden och få bildstorlek
$ Img = imagecreatefromjpeg ("($ pathToImages) ($ fname)");
$ Width = imagesx ($ img);
$ Height = imagesy ($ img);

/ / Beräkna thumbnail storlek
$ New_width = $ thumbWidth;
$ New_height = golv ($ höjd * ($ thumbWidth / $ bredd));

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

/ / Kopiera och ändra storlek på gamla bilder till nya image
imagecopyresized ($ tmp_img, $ img, 0, 0, 0, 0, $ new_width, $ new_height, $ bredd $ höjd);

/ / Spara thumbnail till en fil
imagejpeg ($ tmp_img, "($ pathToThumbs) ($ fname)");

)

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

/ / Läsa in bilden och få bildstorlek
$ Img = imagecreatefromgif ("($ pathToImages) ($ fname)");
$ Width = imagesx ($ img);
$ Height = imagesy ($ img);

/ / Beräkna thumbnail storlek
$ New_width = $ thumbWidth;
$ New_height = golv ($ höjd * ($ thumbWidth / $ bredd));

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

/ / Kopiera och ändra storlek på gamla bilder till nya image
imagecopyresized ($ tmp_img, $ img, 0, 0, 0, 0, $ new_width, $ new_height, $ bredd $ höjd);

/ / Spara thumbnail till en fil
imagegif ($ tmp_img, "($ pathToThumbs) ($ fname)");

)

if (strtolower ($ info ['förlängning']) == "PNG")
(

/ / Läsa in bilden och få bildstorlek
$ Img = imagecreatefrompng ("($ pathToImages) ($ fname)");
$ Width = imagesx ($ img);
$ Height = imagesy ($ img);

/ / Beräkna thumbnail storlek
$ New_width = $ thumbWidth;
$ New_height = golv ($ höjd * ($ thumbWidth / $ bredd));

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

/ / Kopiera och ändra storlek på gamla bilder till nya image
imagecopyresized ($ tmp_img, $ img, 0, 0, 0, 0, $ new_width, $ new_height, $ bredd $ höjd);

/ / Spara thumbnail till en fil
imagepng ($ tmp_img, "($ pathToThumbs) ($ fname)");

)

)

Hur detta fungerar

Funktionen createThumbs tar fyra argument.

  • $ PathToImages -> Sökvägen till mappen bildfilen är i. Det kan se ut ungefär så här: / home / innehåll / användarnamn / html / list / tillagda /
  • $ Fname -> Filnamnet: pic1.gif, johnny.jpg, osv ...
  • $ PathToThumbs -> Sökvägen till den mapp du vill att miniatyrbild att vara i. Du vill inte att detta är samma väg som $ pathToImages, eftersom miniatyrbild kommer att ha samma namn som den ursprungliga bilden.
  • $ ThumbWidth -> bredd som du vill att bilden för att vara i pixlar.

En viktig anmärkning, att jag skulle göra här är att denna funktion inte har någonting på plats, förutom filtillägget kontrollera, att se till att de bildfiler innehåller ingenting skadligt. Eftersom filerna createThumbs () arbetar med har redan lagts upp det antas att filerna på korrekt sätt har granskats.

Det första createThumbs () gör är att ringa pathinfo () . pathinfo () bryter de delar av en väg in en matris. Detta är användbart för oss, eftersom vi behöver till filtillägget ordentligt skapa den lilla bilden. Nästa createThumbs () kontrollerar 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 av denna bild ( imagesx () , imagesy () ). Använda $ thumbWidth och kvoten mellan den ursprungliga bredden och createThumbs höjd () fastställs den nya bredden och höjden på den lilla bilden. Med hjälp av dessa nya förhållanden createThumbs () skapar en "tom" bild som kommer att vara samma bredd och höjd på den lilla bilden med imagecreatetruecolor () . imagecopyresized () används för att ändra storlek på bilden och spara den i "tomma" just skapade. imagecopyresized () kan verka som det tar en hel del parametrar, men om du ta en titt på den dokumentation som den egentligen inte är så komplicerat. Nu när miniatyr finns som en äkta färgbild alla createThumbs behöver göra är att konvertera filen till en jpeg. För att göra detta imagejpeg () kallas.

Det är så funktionen fungerar för JPEG. Det är minimala skillnader för. PNG och. Gifs.