PHP将透明图片(PNG)合并到JPG图片上,实现PNG透明部分透明的效果。

3 篇文章 0 订阅

有2张图片,第一张为背景底图,jpg格式,简称为背景图片;

第二张为放在背景图片上的图片,png格式,有一部分是透明的,简称为目标图片。

要实现的效果是将目标图片放到背景图片上,目标图片透明的部分要透明。

代码其实很简单,最关键的地方就是一定要用

imagecopy

这个函数。

所有的代码如下:

<?php
	//背景图片路径
	$srcurl = './img/japan_map.jpg';
	//目标图片路径
	$desurl = './img/begin.png';
	
	//创建源图的实例
	$src = imagecreatefromstring(file_get_contents($srcurl));
	//创建点的实例
	$des = imagecreatefrompng($desurl);
	//获取点图片的宽高
	list($point_w, $point_h) = getimagesize($desurl);
	
	//重点:png透明用这个函数
	imagecopy($src, $des, 970, 1010, 0, 0, $point_w, $point_h);
	imagecopy($src, $des, 930, 1310, 0, 0, $point_w, $point_h);

	header('Content-Type: image/jpeg');
	imagejpeg($src);
	imagedestroy($src);
	imagedestroy($des);

?>

关于imagecopy 函数说明:

bool imagecopy ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h )

将 src_im 图像中坐标从 src_x,src_y 开始,宽度为 src_w,高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上。

如果没有使用imagecopy 函数而是用了imagecopymerge 函数,就会导致目标图片透明的地方不透明了。

注:我的php版本是5.6的,其它的版本没有测试过。

下面贴一些上面代码的测试结果:

目标图片是这样的

它的四个角是透明的。

代码生成的图片效果如下:


目标图片该透明的地方(上下左右四个角)已经透明了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值