我有一个jpg文件,我想在其上合并另一个图像png文件。我不知道如何使用php实现这个?
答案 0 :(得分:1)
您可以使用gd的 imagecopy 功能。
此功能用于将部分图像从源复制到目标
imagecopy (
$dst_im , // destination image (resource), imagecreatefrom(gif|jpg|png)
$src_im , // destination image (resource), imagecreatefrom(gif|jpg|png)
$dst_x , // x cordinate in destination where u want the new obj placed
$dst_y , // y cordinate in destination where u want the new obj placed
$src_x , // x cordinate in source from wher u want the new obj placed
$src_y , // y cordinate in source from where u want the new obj placed
$src_w , // the width of the object to copy
$src_h // the height of the object to copy
);
正如上面代码中的注释所指出的,您必须为目标和源创建图像资源。
通常使用
完成 $src = imagecreatefromjpg('image.jpg');
$dst = imagecreatefromjpg('watermark');
其余部分只是简单的坐标。
另外,别忘了亲自访问imagecopy。
答案 1 :(得分:0)
以下是使用GD进行热水印的一些示例:
const CORNER_TOP_LEFT = 1;
const CORNER_TOP_RIGHT = 2;
const CORNER_BOTTOM_LEFT = 3;
const CORNER_BOTTOM_RIGHT = 4;
$backgroundImagePath = "img/stamp.png";
$corner=CORNER_BOTTOM_RIGHT;
$alpha=60
$img_res=@imagecreatefromjpeg($filename);
$img_info=getimagesize($backgroundImagePath);
switch ($corner){
case CORNER_TOP_LEFT:
if(!imagecopymerge ($this->imageRes, $img_res, 0, 0, 0, 0, $img_info[0], $img_info[1], $alpha)){
throw new RuntimeException("Unable to make stamp!");
}
break;
case CORNER_TOP_RIGHT:
if(!imagecopymerge ($this->imageRes, $img_res, $this->info[0]-$img_info[0], 0, 0, 0, $img_info[0], $img_info[1], $alpha)){
throw new RuntimeException("Unable to make stamp!");
}
break;
case CORNER_BOTTOM_LEFT:
if(!imagecopymerge ($this->imageRes, $img_res, 0, $this->info[1]-$img_info[1], 0, 0, $img_info[0], $img_info[1], $alpha)){
throw new RuntimeException("Unable to make stamp!");
}
break;
case CORNER_BOTTOM_RIGHT:
if(!imagecopymerge ($this->imageRes, $img_res, $this->info[0]-$img_info[0], $this->info[1]-$img_info[1], 0, 0, $img_info[0], $img_info[1], $alpha)){
throw new RuntimeException("Unable to make stamp!");
}
break;
}
imagejpeg($img_res, "/path/to/save/image.jpg", 100);