PHP(ImageMagick)-合并源数据中的图像
我有一个有效图像源数组,我想在PHP中使用ImageMagick水平合并它们 代码:PHP(ImageMagick)-合并源数据中的图像,php,imagemagick,Php,Imagemagick,我有一个有效图像源数组,我想在PHP中使用ImageMagick水平合并它们 代码: $imagePartsData=[“”,“”,…]; $initImage=函数($source):Imagick { $im=新的Imagick(); $im->setFormat('png'); $im->readImageBlob($source); 返回$im; }; $firstPart=$initImage($imagePartsData[0]); //其他部分 对于($i=1,$c=count($
$imagePartsData=[“”,“”,…];
$initImage=函数($source):Imagick
{
$im=新的Imagick();
$im->setFormat('png');
$im->readImageBlob($source);
返回$im;
};
$firstPart=$initImage($imagePartsData[0]);
//其他部分
对于($i=1,$c=count($imagePartsData);$i<$c;$i++)
{
$part=$initImage($imagePartsData[$i]);
$firstPart->addImage($part);
}
$firstPart->resetIterator();
$combined=$firstPart->appendImages(false);
$combined->setImageFormat(“png”);
标题('Content-Type:image/png');
加在一起;
结果是
预期结果:4.png图像合并为1个呈现人物。我的解决方案:
$imagePartsData
是一个从左到右排序的图像源数组,以便在for循环中正确添加图像
function saveImage(Imagick $imagick)
{
$imagick->setImageFormat("png");
$imagick->writeImageFile(fopen('result.png', 'wb'));
die('saved');
}
function initImage(string $source): Imagick
{
$im = new Imagick();
$im->setFormat('png');
$im->readImageBlob($source);
return $im;
}
$firstPart = initImage($imagePartsData[0]);
$partWidth = $firstPart->getImageWidth();
$partHeight = $firstPart->getImageHeight();
// foreach other parts
for($i = 1, $c = count($imagePartsData); $i < $c; $i++)
{
$part = initImage($imagePartsData[$i]);
$firstPart->addImage($part);
}
$montage = $firstPart->montageImage(new ImagickDraw(), $c.'x1', $partWidth.'x'.$partHeight, 0, '0');
saveImage($montage);
函数saveImage(Imagick$Imagick)
{
$imagick->setImageFormat(“png”);
$imagick->writeImage文件(fopen('result.png','wb');
死亡(“得救”);
}
函数initImage(字符串$source):Imagick
{
$im=新的Imagick();
$im->setFormat('png');
$im->readImageBlob($source);
返回$im;
}
$firstPart=initImage($imagePartsData[0]);
$partWidth=$firstPart->getImageWidth();
$partHeight=$firstPart->getImageHeight();
//其他部分
对于($i=1,$c=count($imagePartsData);$i<$c;$i++)
{
$part=initImage($imagePartsData[$i]);
$firstPart->addImage($part);
}
$montage=$firstPart->montageImage(新的ImagickDraw(),$c.'x1',$partWidth.x'.$partHeight,0,'0');
保存图像(蒙太奇);
结果是意料之中的!
从4张大小相等的图片中合并的人物图片(result.png)。我的解决方案:
$imagePartsData
是一个从左到右排序的图像源数组,以便在for循环中正确添加图像
function saveImage(Imagick $imagick)
{
$imagick->setImageFormat("png");
$imagick->writeImageFile(fopen('result.png', 'wb'));
die('saved');
}
function initImage(string $source): Imagick
{
$im = new Imagick();
$im->setFormat('png');
$im->readImageBlob($source);
return $im;
}
$firstPart = initImage($imagePartsData[0]);
$partWidth = $firstPart->getImageWidth();
$partHeight = $firstPart->getImageHeight();
// foreach other parts
for($i = 1, $c = count($imagePartsData); $i < $c; $i++)
{
$part = initImage($imagePartsData[$i]);
$firstPart->addImage($part);
}
$montage = $firstPart->montageImage(new ImagickDraw(), $c.'x1', $partWidth.'x'.$partHeight, 0, '0');
saveImage($montage);
函数saveImage(Imagick$Imagick)
{
$imagick->setImageFormat(“png”);
$imagick->writeImage文件(fopen('result.png','wb');
死亡(“得救”);
}
函数initImage(字符串$source):Imagick
{
$im=新的Imagick();
$im->setFormat('png');
$im->readImageBlob($source);
返回$im;
}
$firstPart=initImage($imagePartsData[0]);
$partWidth=$firstPart->getImageWidth();
$partHeight=$firstPart->getImageHeight();
//其他部分
对于($i=1,$c=count($imagePartsData);$i<$c;$i++)
{
$part=initImage($imagePartsData[$i]);
$firstPart->addImage($part);
}
$montage=$firstPart->montageImage(新的ImagickDraw(),$c.'x1',$partWidth.x'.$partHeight,0,'0');
保存图像(蒙太奇);
结果是意料之中的!
从4张大小相同的图片中合并的人的图片(result.png)。对于,是文件名吗?仅用于确认。对于,是文件名吗?仅用于确认。