最近处理一个需求,需要从CDN Down大量的图片进行拼接,再转换成PDF。这类工作PHP不是很擅长,但还好这不是一个长期使用且需要一定并发数的任务,为了操作数据库方便,还是使用PHP来完成这项任务。
在拼接的时候,部分图片拼接后高度的值太大,那么这个操作会失败;想来想去只能将图片拼成三列以减少其高度。在互联网上关于imagick extension
并不丰富的资料中,我还是找到了一块代码片段,写出了下面的代码:
use Imagick;
// blob array
$files = [...];
$images = array_chunk($files, 3);
$canvas = new Imagick;
foreach ($images as $image) {
$row = new Imagick();
foreach ($image as $binary) {
$row->readImageBlob($binary);
}
$row->resetIterator();
$combine = $row->appendImages(false);
$canvas->addImage($combine);
}
$canvas->resetIterator();
$content = $canvas->appendImages(true);
$binary = $content->getImageBlob();
$content->destroy();
file_put_contents('combine.png', $binary);