Делаю, так. Но тут именно для 21 изображения. Как сделать чтобы сетка адаптировалась от количества аватаров?
<?php
$bg = new Imagick();
$bg->newImage(1284, 552, 'white');
$bg->setImageFormat("png");
$members = json_decode(file_get_contents("https://api.vk.com/method/users.search?group_id=".$group_id."&fields=photo_200&count=1000&birth_day=".date('d')."&birth_month=".date('m')."&country=&access_token=".$token"&v=5.92"));
foreach ($members->response->items as $key => $user) {
if($key <= 21) {
$img_url[$key] = new Imagick($user->photo_200);
$img_url[$key]->optimizeImageLayers();
$img_url[$key]->adaptiveResizeImage(180, 180, 100);
for($i= $key; $i < 7; $i++) {
$bg->compositeImage($img_url[$key], Imagick::COMPOSITE_DEFAULT, 182*$i+($i)+3, 3);
}
for($i= $key-7; $i < 7; $i++) {
$bg->compositeImage($img_url[$key], Imagick::COMPOSITE_DEFAULT, 182*$i+($i)+3, 186);
}
for($i= $key-14; $i < 7; $i++) {
$bg->compositeImage($img_url[$key], Imagick::COMPOSITE_DEFAULT, 182*$i+($i)+3, 369);
}
}
}
header("Content-Type: image/jpeg");
echo $bg->getImageBlob();