Com dividir una imatge en múltiples imatges Ús de PHP

Publicat a funcions , php per ShortLikeAFox el 26 agost 2008

Així que vull trencar una imatge de grans dimensions en múltiples imatges més petites? No hi ha problema. Això pot semblar com un fosc problema, però existeixen múltiples raons que vostè voldria fer això. Potser vol crear una representació visual del trencaclosques lliscant . O potser està executant un únic tema de WordPress . O potser voleu crear un collage d'algun tipus. En realitat no importa per què vol dividir una imatge en la imatge més petita, PHP facilita aquesta tasca. L'exemple següent només s'ocupa de jpeg. Canvi de la funció per fer front a altres tipus d'imatges no seria tan difícil.

<? Php
/ / Aquesta funció es divideix una imatge en una sèrie d'empreses de la mateixa manera columnes i files.
split_image funció ($ number_of_rows, $ number_of_cols, $ path_to_image, $ file) (

/ / $ Number_of_rows = # de files que voleu;
/ / $ Number_of_cols = # de columnes que voleu
/ Path_to_image / $ = la ruta a la carpeta de la imatge està en, una cosa així com: / home / content / usuari / html / llista / uploads /
/ Path / $ = El nom del fitxer de la imatge: archery.jpg, etc

/ / Ruta anàlisi sintàctica per a l'ampliació
$file_name); $ Info = pathinfo ($ path_to_image. $ File);

/ / Assegurar-se que es tracta d'un jpeg
($info[ 'extension' ]) == 'jpg' ) || ( strtolower ($info[ 'extension' ]) == 'jpeg' ) ){ if ((strtolower ($ info "extensió [']) ==' jpg ') | | (strtolower ($ info« extensió »[]) ==' jpeg ')) (

/ / Carregar la imatge i obtenir la mida de la imatge
); $ Font = imagecreatefromjpeg ("($ path_to_image) ($ file)");
$ Width = ImageSX ($ font); / / Cercar l'ample
Alçada = $ ImageSY ($ font); / / Troba l'altura
segment_width $ = $ ample / number_of_cols $; / / Determinar l'amplada dels segments individuals
segment_height $ = $ alçada / number_of_rows $; / / Determinar l'alçada dels segments individuals

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

for ($ fila = 0; $ fila <number_of_rows $; $ fila + +)
(

, $col, $row ); $ Fn = sprintf ("img 02d_%% 02d.jpg", col, $ $ fila);
); //I print the image name here, so that the process shows itself as it runs echo ("$ fn"); / / imprimeixo el nom de la imatge, de manera que el procés es mostra com funciona
$ Im = @ imagecreatetruecolor ($ segment_width, $ segment_height);
imagecopyresized ($ im, $ font, 0, 0, $ col * $ segment_width, fila $ * $ segment_height, segment_width, $ $ segment_height, segment_width, $ segment_height $);
$ File = "test.jpg";
/ / Guarda les imatges
, 100 )) //The destination will be something like /home/content/c/h/d/images/$fn if (imagejpeg ($ im, "INSERT DESTÍ AQUÍ", 100)) / / El destí serà alguna cosa com / home / content / c / h / d / images / $ fn

echo ("S'ha fet! <br/>");

)

)

)

)

?>