Unire immagini fianco a fianco in PHP
In pratica quello che mi serviva, era di unire una serie di immagini mettendole fianco a fianco.
Considerando che sono tutte alte uguali, e quindi non andremo a controllare eventuali differenze di altezza.
Tutto ciò in PHP.
Questa la funzioncina che ho messo su, che richiede che sia attivata l'estensione GD di PHP.
function mergeImagesSideBySide($images, $path, $finalName) {
$mw = 0;
foreach ($images as $image) {
list($iw) = getimagesize($path . $image);
$mw += $iw;
}
$mergedImage = imagecreatetruecolor($mw, 800);
imagealphablending($mergedImage, false);
imagesavealpha($mergedImage, true);
$posX = 0;
foreach ($images as $image) {
list($iw, $ih) = getimagesize($path . $image);
$img = imagecreatefromjpeg($path . $image);
imagecopy($mergedImage, $img, $posX, 0, 0, 0, $iw, $ih);
$posX += $iw;
}
imagejpeg($mergedImage, $path . '/' . $finalName);
imagedestroy($mergedImage);
}
Sicuramente può essere migliorata.
Comunque, passiamo un array di immagini, il path di destinazione, e il nome finale dell'immagine.
Al primo ciclo andiamo a calcolare la larghezza dell'immagine, sommando le larghezze di tutte le immagini.
Nel secondo ciclo, prendiamo le immagini una ad una e ne facciamo una copia, che poi andiamo a mettere in quella finale.
Come vedete, andiamo a calcolare la posizione sull'asse x man mano che scorriamo l'array.
Enjoy!
php gd imagecopy imagecreatetruecolor
Commentami!