Hace poco, me veía en un proyecto en el cuál requería que una imagen esté recortada en x partes iguales.
Así, que lo más sencillo que se pudo hacer, fué crear una función php que reciba la imagen, el alto, el ancho, y el inicio desde donde cortar la imagen.
Luego, con el bucle for se haría lo demás para generar la imagen a partir de el ancho nuevo que tendrá cada imagen (nuevo ancho * el valor actual del bucle).
Como resultado, obtenemos la imagen en x partes iguales, pero con el mismo alto.
Cabe resaltar, que recomiendo usar imágenes que tengan un ancho que sea número par.
function generar_imagen($inicio,$alto,$partes,$imagen) { $inicio_x = $inicio; $inicio_y = 0; $ancho = $partes; $alto = $alto; $termina_x = 0; $termina_y = 0; $imagen = imagecreatefromjpeg($imagen); $dst_im = imagecreatetruecolor($ancho, $alto); $white = imagecolorallocate($dst_im, 255, 255, 255); imagefill($dst_im, 0, 0, $white); imagecopy($dst_im, $imagen, $termina_x, $termina_y, $inicio_x, $inicio_y, $ancho, $alto); return $dst_im; } $imagen = 'ted.jpg'; $imagen1 = getimagesize($imagen); $ancho = $imagen1[0]; $alto = $imagen1[1]; $nuevo_ancho = floor($ancho / 4); $inicial = 0; for($i = 1; $i <= 4; $i++): $imagen_ = generar_imagen($nuevo_ancho*$inicial,$alto,$nuevo_ancho,$imagen); imagejpeg($imagen_,'parte_'.$i.'.jpg',95); $inicial++; endfor;
Como podemos ver, hacemos uso de imagejpeg para generar los recortes y guardarlos. El código anterior, genera 4 partes iguales.