Hur man dela upp en bild i flera bilder med hjälp av PHP

Publicerad i funktioner, php av ShortLikeAFox den 26 aug, 2008

Så du vill bryta en större bild i flera mindre bilder? Inga problem. Detta kan verka som ett skumt problem, men det finns flera skäl du vill göra detta. Kanske du vill skapa en visuell skjutdörr pussel. Eller kanske du använder en unik WordPress tema. Eller kanske du vill skapa ett collage av något slag. Det spelar ingen större roll varför du vill dela en bild i mindre bild, PHP gör uppgiften lätt. Exemplet nedan endast behandlar JPEG. Ändra funktion för att hantera andra typer av bilder skulle inte vara så svårt.

<? php
/ / Denna funktion kommer att dela upp 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 = # av cols du vill
/ / $ path_to_image = sökvägen till den mapp bilden är i, något i stil med: / home / innehåll / användarnamn / html / lista / inlagda /
/ / $ filnamn = filnamnet på bilden: archery.jpg, etc.

/ / Analysera 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")) (

/ / Load image och få bildstorlek
); $ källa = imagecreatefromjpeg ( "($ path_to_image) ($ filnamn)");
$ width = imagesx ($ källa), / / Find bredden
$ height = imagesy ($ källa), / / Find höjden
$ segment_width = $ bredd / $ number_of_cols, / / Bestäm bredden på de enskilda segmenten
$ segment_height = $ höjd / $ number_of_rows, / / Ta reda på höjden på de enskilda segmenten

for ($ col = 0; $ col <$ number_of_cols, $ col + +)
(

for ($ rad = 0; $ rad <$ number_of_rows, $ rad + +)
(

, $col, $row ); $ fn = sprintf ( "img% 02d_% 02d.jpg", $ col, $ row);
); //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 löper
$ im = @ imagecreatetruecolor ($ segment_width, $ segment_height);
imagecopyresized ($ im, $ källa, 0, 0, $ col * $ segment_width, $ row * $ segment_height, $ segment_width, $ segment_height, $ segment_width, $ segment_height);
$ file = "test.jpg";
/ / Spara bilderna
, 100 )) //The destination will be something like /home/content/c/h/d/images/$fn om (imagejpeg ($ im, "Infoga DESTINATION här", 100)) / / Destinationen kommer att vara något i stil med / home / innehåll / c / h / d / images / $ fn

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

)

)

)

)

?>

| Kommentarer