php 叠加图片代码,php图片裁剪,叠加,生成ico

// **************************************** //

// 功能:图片叠加

// 参数: $dst 背景图片地址

// src 叠加图片地址

// newfile 另存图片文件名

// left 距离背景图片左边的距离

// top 距离背景图片上部的距离

// **************************************** //

function superimposedPng($dst,$src,$newfile,$left=null,$top=null)

{

//得到原始图片信息

$dst_im = imagecreatefrompng($dst);

$dst_info = getimagesize($dst);

imagesavealpha($dst_im, true);

//水印图像

$src_im = imagecreatefrompng($src);

$src_info = getimagesize($src);

if(empty($left)){

$left = $dst_info[0]-$src_info[0];

}

if(empty($top)){

$top = $dst_info[1]-$src_info[1];

}

//合并水印图片

imagecopy($dst_im,$src_im,$left,$top,0,0,$src_info[0],$src_info[1]);

//输出合并后水印图片

imagepng($dst_im, $newfile);

imagedestroy($dst_im);

imagedestroy($src_im);

}

// **************************************** //

// 功能:图片叠加

// 参数: $dst 背景图片地址

// src png图片地址

// size ico的大小

// filename 转换的ico的名字

// **************************************** //

function covertPngToIco($src,$size,$filename)

{

$im = imagecreatefrompng($src);

$imginfo = getimagesize($src);

$resize_im = @imagecreatetruecolor($size,$size);

imagealphablending($resize_im, false);

imagecolortransparent($resize_im, imagecolorallocatealpha($resize_im, 0, 0, 0,0));

imagecopyresampled($resize_im,$im,0,0,0,0,$size,$size,$imginfo[0],$imginfo[1]);

include "phpthumb.ico.php";

$icon = new phpthumb_ico();

$gd_image_array = array($resize_im);

$icon_data = $icon->GD2ICOstring($gd_image_array);

$filename = $filename.".ico";

//保存ico

file_put_contents($filename, $icon_data);

}

// **************************************** //

// 功能:重置图片大小

// 参数: $im 图片值

// maxwidth 转换长度

// maxheight 转换高度

// name 转换的名字

// filetype 转换类型

// **************************************** //

function resizeImage($img, $w, $h, $newfilename) {

//Check if GD extension is loaded

if (!extension_loaded('gd') && !extension_loaded('gd2')) {

trigger_error("GD is not loaded", E_USER_WARNING);

return false;

}

//Get Image size info

$imgInfo = getimagesize($img);

switch ($imgInfo[2]) {

case 1: $im = imagecreatefromgif($img); break;

case 2: $im = imagecreatefromjpeg($img); break;

case 3: $im = imagecreatefrompng($img); break;

default: trigger_error('Unsupported filetype!', E_USER_WARNING); break;

}

//If image dimension is smaller, do not resize

if ($imgInfo[0] <= $w && $imgInfo[1] <= $h) {

$nHeight = $imgInfo[1];

$nWidth = $imgInfo[0];

}else{

//yeah, resize it, but keep it proportional

if ($w/$imgInfo[0] > $h/$imgInfo[1]) {

$nWidth = $w;

$nHeight = $imgInfo[1]*($w/$imgInfo[0]);

}else{

$nWidth = $imgInfo[0]*($h/$imgInfo[1]);

$nHeight = $h;

}

}

$nWidth = round($nWidth);

$nHeight = round($nHeight);

$newImg = imagecreatetruecolor($nWidth, $nHeight);

/* Check if this image is PNG or GIF, then set if Transparent*/

if(($imgInfo[2] == 1) OR ($imgInfo[2]==3)){

imagealphablending($newImg, false);

imagesavealpha($newImg,true);

$transparent = imagecolorallocatealpha($newImg, 255, 255, 255, 127);

imagefilledrectangle($newImg, 0, 0, $nWidth, $nHeight, $transparent);

}

imagecopyresampled($newImg, $im, 0, 0, 0, 0, $nWidth, $nHeight, $imgInfo[0], $imgInfo[1]);

//Generate the file, and rename it to $newfilename

switch ($imgInfo[2]) {

case 1: imagegif($newImg,$newfilename); break;

case 2: imagejpeg($newImg,$newfilename); break;

case 3: imagepng($newImg,$newfilename); break;

default: trigger_error('Failed resize image!', E_USER_WARNING); break;

}

return $newfilename;

}

//原始图像

$logo = "su.png";

resizeImage("ok.png","30","30","ok.png");

superimposedPng($logo, "ok.png","su.png");

covertPngToIco("su.png",64,"ok");

?>

代码方法是总结的php图片(image)缩放,叠加, 生成ico的代码, 代码中主要是处理png的情况。 对png图片生成后变黑,png透明进行了处理。 需要处理jpeg,jif图片需要要修改下imagecreatefrompng为相应的imagecreatefromjpg, imagecreatefromjif方法。

在使用过程中参考网址,以方便各位参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值