php 图片ico格式,php在线生成ico文件的代码

php在线生成ico文件的代码

2021-01-23 13:44:598

index.php

复制代码 代码如下:

$output="";

if(isset($_GET['action'])&&$_GET['action']=='make'){

if(isset($_FILES['upimage']['tmp_name'])&&$_FILES['upimage']['tmp_name']&&is_uploaded_file($_FILES['upimage']['tmp_name'])){

if($_FILES['upimage']['type']>210000){

echo"你上传的文件体积超过了限制最大不能超过200K";

exit();

}

$fileext=array("image/pjpeg","image/gif","image/x-png");

if(!in_array($_FILES['upimage']['type'],$fileext)){

echo"你上传的文件格式不正确仅支持jpg,gif,png";

exit();

}

if($im=@imagecreatefrompng($_FILES['upimage']['tmp_name'])or$im=@imagecreatefromgif($_FILES['upimage']['tmp_name'])or$im=@imagecreatefromjpeg($_FILES['upimage']['tmp_name'])){

$imginfo=@getimagesize($_FILES['upimage']['tmp_name']);

if(!is_array($imginfo)){

echo"图形格式错误!";

}

switch($_POST['size']){

case1;

$resize_im=@imagecreatetruecolor(16,16);

$size=16;

break;

case2;

$resize_im=@imagecreatetruecolor(32,32);

$size=32;

break;

case3;

$resize_im=@imagecreatetruecolor(48,48);

$size=48;

break;

default;

$resize_im=@imagecreatetruecolor(32,32);

$size=32;

break;

}

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

include"phpthumb.ico.php";

$icon=newphpthumb_ico();

$gd_image_array=array($resize_im);

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

$filename="temp/".date("Ymdhis").rand(1,1000).".ico";

if(file_put_contents($filename,$icon_data)){

$output="生成成功!请点右键->另存为保存到本地点击下载";

}

}else{

echo"生成错误请重试!";

}

}

}

?>

ICO图标在线转换

body{background-color:#fff;color:#000000;font-family:arial;margin:30px;font-size:12px;}

table{border:0}

td{line-height:16px;}

label{cursor:hand;}

ICO图标在线转换

请上传你要转换的图片
支持格式png,jpg,gif
目标尺寸:

16*16

32*32

48*48

if($output){

echo"

".$output."";

}

?>

Poweredby非常爱漫

phpthumb.ico.php

复制代码 代码如下:

//

///phpThumb()byJamesHeinrich//

//availableathttp://phpthumb.sourceforge.net///

//

/

//phpthumb.ico.php-.ICOoutputformatfunctions//

/

//

classphpthumb_ico{

functionphpthumb_ico(){

returntrue;

}

functionGD2ICOstring(&$gd_image_array){

foreach($gd_image_arrayas$key=>$gd_image){

$ImageWidths[$key]=ImageSX($gd_image);

$ImageHeights[$key]=ImageSY($gd_image);

$bpp[$key]=ImageIsTrueColor($gd_image)?32:24;

$totalcolors[$key]=ImageColorsTotal($gd_image);

$icXOR[$key]='';

for($y=$ImageHeights[$key]-1;$y>=0;$y--){

for($x=0;$x

$argb=$this->GetPixelColor($gd_image,$x,$y);

$a=round(255*((127-$argb['alpha'])/127));

$r=$argb['red'];

$g=$argb['green'];

$b=$argb['blue'];

if($bpp[$key]==32){

$icXOR[$key].=chr($b).chr($g).chr($r).chr($a);

}elseif($bpp[$key]==24){

$icXOR[$key].=chr($b).chr($g).chr($r);

}

if($a<128){

@$icANDmask[$key][$y].='1';

}else{

@$icANDmask[$key][$y].='0';

}

}

//maskbitsare32-bitalignedperscanline

while(strlen($icANDmask[$key][$y])%32){

$icANDmask[$key][$y].='0';

}

}

$icAND[$key]='';

foreach($icANDmask[$key]as$y=>$scanlinemaskbits){

for($i=0;$i

$icAND[$key].=chr(bindec(str_pad(substr($scanlinemaskbits,$i,8),8,'0',STR_PAD_LEFT)));

}

}

}

foreach($gd_image_arrayas$key=>$gd_image){

$biSizeImage=$ImageWidths[$key]*$ImageHeights[$key]*($bpp[$key]/8);

//BITMAPINFOHEADER-40bytes

$BitmapInfoHeader[$key]='';

$BitmapInfoHeader[$key].="\x28\x00\x00\x00";//DWORDbiSize;

$BitmapInfoHeader[$key].=$this->LittleEndian2String($ImageWidths[$key],4);//LONGbiWidth;

//ThebiHeightmemberspecifiesthecombined

//heightoftheXORandANDmasks.

$BitmapInfoHeader[$key].=$this->LittleEndian2String($ImageHeights[$key]*2,4);//LONGbiHeight;

$BitmapInfoHeader[$key].="\x01\x00";//WORDbiPlanes;

$BitmapInfoHeader[$key].=chr($bpp[$key])."\x00";//wBitCount;

$BitmapInfoHeader[$key].="\x00\x00\x00\x00";//DWORDbiCompression;

$BitmapInfoHeader[$key].=$this->LittleEndian2String($biSizeImage,4);//DWORDbiSizeImage;

$BitmapInfoHeader[$key].="\x00\x00\x00\x00";//LONGbiXPelsPerMeter;

$BitmapInfoHeader[$key].="\x00\x00\x00\x00";//LONGbiYPelsPerMeter;

$BitmapInfoHeader[$key].="\x00\x00\x00\x00";//DWORDbiClrUsed;

$BitmapInfoHeader[$key].="\x00\x00\x00\x00";//DWORDbiClrImportant;

}

$icondata="\x00\x00";//idReserved;//Reserved(mustbe0)

$icondata.="\x01\x00";//idType;//ResourceType(1foricons)

$icondata.=$this->LittleEndian2String(count($gd_image_array),2);//idCount;//Howmanyimages?

$dwImageOffset=6+(count($gd_image_array)*16);

foreach($gd_image_arrayas$key=>$gd_image){

//ICONDIRENTRYidEntries[1];//Anentryforeachimage(idCountof'em)

$icondata.=chr($ImageWidths[$key]);//bWidth;//Width,inpixels,oftheimage

$icondata.=chr($ImageHeights[$key]);//bHeight;//Height,inpixels,oftheimage

$icondata.=chr($totalcolors[$key]);//bColorCount;//Numberofcolorsinimage(0if>=8bpp)

$icondata.="\x00";//bReserved;//Reserved(mustbe0)

$icondata.="\x01\x00";//wPlanes;//ColorPlanes

$icondata.=chr($bpp[$key])."\x00";//wBitCount;//Bitsperpixel

$dwBytesInRes=40+strlen($icXOR[$key])+strlen($icAND[$key]);

$icondata.=$this->LittleEndian2String($dwBytesInRes,4);//dwBytesInRes;//Howmanybytesinthisresource?

$icondata.=$this->LittleEndian2String($dwImageOffset,4);//dwImageOffset;//Whereinthefileisthisimage?

$dwImageOffset+=strlen($BitmapInfoHeader[$key]);

$dwImageOffset+=strlen($icXOR[$key]);

$dwImageOffset+=strlen($icAND[$key]);

}

foreach($gd_image_arrayas$key=>$gd_image){

$icondata.=$BitmapInfoHeader[$key];

$icondata.=$icXOR[$key];

$icondata.=$icAND[$key];

}

return$icondata;

}

functionLittleEndian2String($number,$minbytes=1){

$intstring='';

while($number>0){

$intstring=$intstring.chr($number&255);

$number>>=8;

}

returnstr_pad($intstring,$minbytes,"\x00",STR_PAD_RIGHT);

}

functionGetPixelColor(&$img,$x,$y){

if(!is_resource($img)){

returnfalse;

}

return@ImageColorsForIndex($img,@ImageColorAt($img,$x,$y));

}

}

?>

点击这里复制本文地址

以上内容由聚米学院网友整理呈现,如对侵犯您的权益,请联系邮箱:fzsbm@qq.com

留言评论

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值