我有多个PNG图像在一个div中,这些图像是PNG格式的,并且根据用户选择的自定义选项呈现为单个图像。另外,添加文本也是一种功能,它允许在这些图像上方添加带有文本的div。
现在,我想生成一个包含这些多个图像和文本组合的图像,保持文本的字体和大小不变。
例如,出现在界面上的图像是由多个图像和文本组合而成的。(它通过css定位来管理)
而这个图像是由下面两个图像和文本组成的。
但是这给我一个全黑的图像
另外,我需要将最终生成的图像与文本混合。
编辑:
- jpg 图像改为 png - imagecopymerge 改为 imagecopy
最新结果:
现在,我想生成一个包含这些多个图像和文本组合的图像,保持文本的字体和大小不变。
例如,出现在界面上的图像是由多个图像和文本组合而成的。(它通过css定位来管理)
![enter image description here](https://istack.dev59.com/mCjMx.webp)
我尝试获取图片的方法是:创建一个名为create-image.php的文件。
<?php
createimageinstantly();
function createimageinstantly($img1='',$img2='',$img3=''){
$x=$y=1000;
header('Content-Type: image/png');
$targetFolder = '/gw/media/uploads/processed/';
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
$img1 = $targetPath.'img1.png';
$img2 = $targetPath.'img2.png';
$img3 = $targetPath.'img3.png';
$outputImage = imagecreatetruecolor(1000, 1000);
$first = imagecreatefrompng($img1);
$second = imagecreatefrompng($img2);
$third = imagecreatefrompng($img3);
imagecopy($outputImage,$first,0,0,0,0, $x, $y);
imagecopy($outputImage,$second,0,0,0,0, $x, $y);
imagecopy($outputImage,$third,0,200,-200,0, $x, $y);
imagepng($outputImage, $targetPath .round(microtime(true) * 1000).'.png');
imagedestroy($outputImage);
}
?>
但是这给我一个全黑的图像
![![在此输入图片描述](https://istack.dev59.com/WG4QZ.webp)
编辑:
- jpg 图像改为 png - imagecopymerge 改为 imagecopy
最新结果:
<?php
createimageinstantly();
//$targetFolder = '/gw/media/uploads/processed/';
//$targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
//$img3 = $targetPath.'img3.png';
//print_r(getimagesize('http://www.vapor-rage.com/wp-content/uploads/2014/05/sample.jpg'));
function createimageinstantly($img1='',$img2='',$img3=''){
$x=$y=600;
header('Content-Type: image/png');
$targetFolder = '/gw/media/uploads/processed/';
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
$img1 = $targetPath.'img1.png';
$img2 = $targetPath.'img2.png';
$img3 = $targetPath.'img3.png';
$outputImage = imagecreatetruecolor(600, 600);
// set background to white
$white = imagecolorallocate($outputImage, 255, 255, 255);
imagefill($outputImage, 0, 0, $white);
$first = imagecreatefrompng($img1);
$second = imagecreatefrompng($img2);
$third = imagecreatefrompng($img3);
//imagecopyresized ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )
imagecopyresized($outputImage,$first,0,0,0,0, $x, $y,$x,$y);
imagecopyresized($outputImage,$second,0,0,0,0, $x, $y,$x,$y);
imagecopyresized($outputImage,$third,200,200,0,0, 100, 100, 204, 148);
imagepng($outputImage, $targetPath .round(microtime(true)).'.png');
imagedestroy($outputImage);
}
?>
imagecopy()
代替imagecopymerge()
。 - Mark Setchellimagecopy()
的结果已经改变,但仍未占据整个宽度。 - Suman KC1000x1000
,而且我已经创建了一个尺寸为1000x1000
的背景,但是它们并不完全重叠。 - Suman KC