php 裁剪图片并处理png图片背景变黑
2024-09-06 23:14:57
/*TODO 图片裁剪*/
function img_cutting($file_old,$file_new,$h,$w){
$image = $file_old; // 原图
$dir = 'xxxxxx';//新地址
if(!is_dir($dir)){
mkdir($dir,0777,true);
}
$imgstream = file_get_contents($image);
$im = imagecreatefromstring($imgstream);
$x = imagesx($im);//获取图片的宽
$y = imagesy($im);//获取图片的高
// 缩略后的大小
$xx = $h;
$yy = $w; if($x>$y){
//图片宽大于高
$sx = abs(($y-$x)/2);
$sy = 0;
$thumbw = $y;
$thumbh = $y;
} else {
//图片高大于等于宽
$sy = abs(($x-$y)/2.5);
$sx = 0;
$thumbw = $x;
$thumbh = $x;
}
$img_info= getimagesize($file_old);
if(end($img_info) == 'image/png'){
$img = imagecreatefrompng($file_old);
imagesavealpha($img,true);//这里很重要;
if(function_exists("imagecreatetruecolor")) {
$dim = imagecreatetruecolor($yy, $xx); // 创建目标图gd2
} else {
$dim = imagecreate($yy, $xx); // 创建目标图gd1
}
imagealphablending($dim,false);//这里很重要,意思是不合并颜色,直接用$img图像颜色替换,包括透明色;
imagesavealpha($dim,true);//这里很重要,意思是不要丢了$thumb图像的透明色;
imageCopyreSampled ($dim,$im,0,0,$sx,$sy,$yy,$xx,$thumbw,$thumbh);
return imagepng($dim,$file_new);
}elseif(end($img_info) != 'image/gif'){
if(function_exists("imagecreatetruecolor")) {
$dim = imagecreatetruecolor($yy, $xx); // 创建目标图gd2
} else {
$dim = imagecreate($yy, $xx); // 创建目标图gd1
}
imageCopyreSampled ($dim,$im,0,0,$sx,$sy,$yy,$xx,$thumbw,$thumbh);
return imagejpeg($dim,$file_new,100);
}
最新文章
- vector、list、deque三者比较
- SQL SERVER中隐式转换的一些细节浅析
- padding
- Finereport集群配置
- SpringMVC数据库链接池,以及其他相关配置
- The 2013 ACM-ICPC Asia Changsha Regional Contest - K
- 菜鸟学习Spring——第一个例子
- JDBC和JPA调用储存过程 接收存储过程有返回值
- WebStorm配置(2016/11/18更新)
- Oracle数据库对象_同义词
- linux开关机命令
- CentOS ulimit
- (一) 从Angular1到Angular2的杂谈
- (转)目前比较全的CSS重设(reset)方法总结
- 【NOIP2012】疫情传递
- GitHub下载单个文件
- 在Linux中复制文件夹下的全部文件到另外文件夹
- openstack Q版部署-----nova服务配置-计算节点(6)
- npm报错处理
- 【转】Angular学习总结--很详细的教程