我想在php网站的字母底部(保存为jpg文件)插入签名(保存为png文件)。
我使用imagecopymerge
,但它会创建一个黑色图像文件而不是我的请求。
我也使用了这段代码,但没有结果。
function merge($filename_x, $filename_y, $filename_result) {
list($width_x, $height_x) = getimagesize($filename_x);
list($width_y, $height_y) = getimagesize($filename_y);
$image = imagecreatetruecolor($width_x + $width_y, $height_x);
$image_x = imagecreatefromjpeg($filename_x);
$image_y = imagecreatefromgif($filename_y);
imagecopy($image, $image_x, 0, 20, 30, 50, $width_x, $height_x);
imagecopy($image, $image_y, $width_x, 0, 10, 0, $width_y, $height_y);
imagejpeg($image, $filename_result);
imagedestroy($image);
imagedestroy($image_x);
imagedestroy($image_y);
}
merge('myimg.jpeg', 'first.gif', 'merged.jpg');
答案 0 :(得分:1)
请尝试此功能,我已经为您定制。
function merge($filename_x, $filename_y, $filename_result) {
$source = imagecreatefromjpeg($filename_x);
$tobeMerged = imagecreatefromgif($filename_y);
//add signature on bottom right
imagecopymerge($source, $tobeMerged, imagesx($source) - imagesx($tobeMerged), imagesy($source) - imagesy($tobeMerged), 0, 0, imagesx($tobeMerged), imagesy($tobeMerged), 100);
//save your merged image
imagejpeg($source, $filename_result);
//destroy image resources to free memory
imagedestroy($source);
imagedestroy($tobeMerged);
}
merge('myimg.jpeg', 'first.gif', 'merged.jpg');
答案 1 :(得分:1)
这个功能对我有用。由于我没有看过您的图像,我可以告诉您我用它来测试它。
的
function merge($filename_x, $filename_y, $filename_result) {
list($width_x, $height_x) = getimagesize($filename_x);
list($width_y, $height_y) = getimagesize($filename_y);
$image = imagecreatetruecolor($width_x, $height_x);
$image_x = imagecreatefromjpeg($filename_x);
$image_y = imagecreatefromgif($filename_y);
imagecopy($image, $image_x, 0, 0, 0, 0, $width_x, $height_x);
imagecopy($image, $image_y, 0, 0, 0, 0, $width_y, $height_y);
imagejpeg($image, $filename_result);
imagedestroy($image);
imagedestroy($image_x);
imagedestroy($image_y);
}
merge('bg.jpg', 'Untitled.gif', 'merged.jpg');
这似乎工作正常。我假设你可能有一些定位问题。尝试从0开始的所有内容,然后开始移动,直到获得所需的效果。
答案 2 :(得分:0)
您是否能够运行命令行工具(例如通过exec)?如果是这样,imagemagick命令行工具可以执行您需要的任何图像处理。 layering functionality听起来就像你追求的那样:
echo exec('composite -geometry +5+10 image1.jpg image2.png image2.png');
答案 3 :(得分:0)
您的gif可能有调色板,而不是真正的彩色图像。如果你的php版本是5+检查imageistruecolor,如果使用imagepalettetotruecolor。