动态生成图片的问题

bccu 2014-02-28 10:26:08
想根据一张背景图片、一张头像图片、还有几个文字,生成一张图片
请问怎么做呢,多谢
...全文
198 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2014-03-03
  • 打赏
  • 举报
回复
$image_2 = imagerotate($image_2, 50, imagecolorallocatealpha($image_2, 0x00, 0x00, 0x00, 0));
换个背景色,比如
$image_2 = imagerotate($image_2, 50, imagecolorallocatealpha($image_2, 0xfe, 0xfe, 0x00, 0));

具体情况需要具体对待
这世界上没有一成不变的东西
bccu 2014-03-03
  • 打赏
  • 举报
回复
引用 9 楼 kwdpx 的回复:
不就是水印吗
水印是文字,这个没有什么问题,现在是合成的那张图片多了个黑边框(还是虚的)
kwdpx 2014-03-02
  • 打赏
  • 举报
回复
不就是水印吗
bccu 2014-03-02
  • 打赏
  • 举报
回复
引用 7 楼 xuzuning 的回复:
只对你的代码简单改了几处
$path_1 = "http://avatar.csdn.net/1/5/3/1_bccu.jpg";
//装备图片
$path_2 = "http://avatar.csdn.net/5/7/1/1_phpnewnew.jpg";

//将人物和装备图片分别取到两个画布中
$image_1 = imagecreatefromstring(file_get_contents($path_1));
$image_2 = imagecreatefromstring(file_get_contents($path_2));

// Rotate
$image_2 = imagerotate($image_2, 50, imagecolorallocatealpha($image_2, 0x00, 0x00, 0x00, 0));

//创建一个和人物图片一样大小的真彩色画布(ps:只有这样才能保证后面copy装备图片的时候不会失真)
$image_3 = imageCreatetruecolor(imagesx($image_1),imagesy($image_1));
//为真彩色画布创建白色背景,再设置为透明
$color = imagecolorallocate($image_3, 255, 255, 255);
imagefill($image_3, 0, 0, $color);
imageColorTransparent($image_3, $color);
//首先将人物画布采样copy到真彩色画布中,不会失真
imagecopyresampled($image_3,$image_1,0,0,0,0,imagesx($image_1),imagesy($image_1),imagesx($image_1),imagesy($image_1));

imagecolortransparent($image_2, imagecolorat($image_2, 0, 0));

//再将装备图片copy到已经具有人物图像的真彩色画布中,同样也不会失真
imagecopymerge($image_3,$image_2, 20,20,0,0,imagesx($image_2),imagesy($image_2), 100);
//将画布保存到指定的gif文件

#设置水印字体颜色
$color = imagecolorallocatealpha($image_3,0,0,0,100);
#设置字体文件路径
$fff = "c:/windows/fonts/arial.ttf";
#水印文字
$str = "test";
$str = iconv( 'utf-8','gbk', $str);
#打水印
imagettftext($image_3,20,20,20,100,$color,$fff,$str);
imagejpeg($image_3);
多谢,基本实现功能,还有点小问题,小图片多了个黑边框,咋去掉呢,多谢
xuzuning 2014-03-02
  • 打赏
  • 举报
回复
只对你的代码简单改了几处
$path_1 = "http://avatar.csdn.net/1/5/3/1_bccu.jpg";
//装备图片
$path_2 = "http://avatar.csdn.net/5/7/1/1_phpnewnew.jpg";

//将人物和装备图片分别取到两个画布中
$image_1 = imagecreatefromstring(file_get_contents($path_1));
$image_2 = imagecreatefromstring(file_get_contents($path_2));

// Rotate
$image_2 = imagerotate($image_2, 50, imagecolorallocatealpha($image_2, 0x00, 0x00, 0x00, 0));

//创建一个和人物图片一样大小的真彩色画布(ps:只有这样才能保证后面copy装备图片的时候不会失真)
$image_3 = imageCreatetruecolor(imagesx($image_1),imagesy($image_1));
//为真彩色画布创建白色背景,再设置为透明
$color = imagecolorallocate($image_3, 255, 255, 255);
imagefill($image_3, 0, 0, $color);
imageColorTransparent($image_3, $color);
//首先将人物画布采样copy到真彩色画布中,不会失真
imagecopyresampled($image_3,$image_1,0,0,0,0,imagesx($image_1),imagesy($image_1),imagesx($image_1),imagesy($image_1));

imagecolortransparent($image_2, imagecolorat($image_2, 0, 0));

//再将装备图片copy到已经具有人物图像的真彩色画布中,同样也不会失真
imagecopymerge($image_3,$image_2, 20,20,0,0,imagesx($image_2),imagesy($image_2), 100);
//将画布保存到指定的gif文件

#设置水印字体颜色
$color = imagecolorallocatealpha($image_3,0,0,0,100);
#设置字体文件路径
$fff = "c:/windows/fonts/arial.ttf";
#水印文字
$str = "test";
$str = iconv( 'utf-8','gbk', $str);
#打水印
imagettftext($image_3,20,20,20,100,$color,$fff,$str);
imagejpeg($image_3);
bccu 2014-03-02
  • 打赏
  • 举报
回复
引用 5 楼 xuzuning 的回复:
你最好给出具体的图片和你已经完成的代码
$path_1 = "./images/Penguins.jpg"; //装备图片 $path_2 = "./images/000.gif"; //将人物和装备图片分别取到两个画布中 $image_1 = imagecreatefromjpeg($path_1); $image_2 = imagecreatefromgif($path_2); // Rotate $image_2 = imagerotate($image_2, 50, imagecolorallocatealpha($image_2, 0x00, 0x00, 0x00, 0)); //创建一个和人物图片一样大小的真彩色画布(ps:只有这样才能保证后面copy装备图片的时候不会失真) $image_3 = imageCreatetruecolor(imagesx($image_1),imagesy($image_1)); //为真彩色画布创建白色背景,再设置为透明 $color = imagecolorallocate($image_3, 255, 255, 255); imagefill($image_3, 0, 0, $color); imageColorTransparent($image_3, $color); //首先将人物画布采样copy到真彩色画布中,不会失真 imagecopyresampled($image_3,$image_1,0,0,0,0,imagesx($image_1),imagesy($image_1),imagesx($image_1),imagesy($image_1)); //再将装备图片copy到已经具有人物图像的真彩色画布中,同样也不会失真 imagecopymerge($image_3,$image_2, 320,320,0,0,imagesx($image_2),imagesy($image_2), 100); //将画布保存到指定的gif文件 #设置水印字体颜色 $color = imagecolorallocatealpha($image_3,0,0,0,100); #设置字体文件路径 $fff = "c:/windows/fonts/arial.ttf"; #水印文字 $str = "test"; $str = iconv( 'utf-8','gbk', $str); #打水印 imagettftext($image_3,20,20,20,100,$color,$fff,$str); imagejpeg($image_3, "./images/update/test.jpg"); 上面是我的代码,功能是两张图片合在一块,并且合上去的那张图片(小图片)要旋转一定的角度,同时加文字在上面,图片可以随便找两张就行
xuzuning 2014-03-02
  • 打赏
  • 举报
回复
你最好给出具体的图片和你已经完成的代码
bccu 2014-03-02
  • 打赏
  • 举报
回复
引用 1 楼 PhpNewnew 的回复:
查看一下手册里和图片处理相关的函数.
图片合成实现了,但是有个问题,合成上去的图片用imagerotate做了旋转,背景咋处理实现透明效果呢,不想要颜色填充
jxaujunjun 2014-03-01
  • 打赏
  • 举报
回复
可以看一下文档
bccu 2014-03-01
  • 打赏
  • 举报
回复
引用 楼主 bccu 的回复:
想根据一张背景图片、一张头像图片、还有几个文字,生成一张图片 请问怎么做呢,多谢
多谢,刚入门,我研究下
黄袍披身 2014-02-28
  • 打赏
  • 举报
回复
查看一下手册里和图片处理相关的函数.

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧