php在线生成ico文件的代码
前端之家收集整理的这篇文章主要介绍了
php在线生成ico文件的代码,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
index.PHP
<div class="codetitle"><a style="CURSOR: pointer" data="74274" class="copybut" id="copybut74274" onclick="doCopy('code74274')"> 代码如下:
<div class="codebody" id="code74274">
<?
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,$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="temp/".date("Ymdhis").rand(1,1000).".ico";
if(file_put_contents($filename,$icon_data)){
$output="
生成成功!请点右键->另存为保存到本地
<ahref=\"".$filename."\"target=\"_blank\">点击下载";
} }else{
echo"生成错误请重试!";
} } }
?>
ICO图标在线转换 ICO图标在线转换
<formaction="?action=make"method="post"enctype='multipart/form-data'>
<table>
<tr>
<td>
请上传你要转换的图片支持格式png,jpg,gif</td>
</tr>
<tr>
<td><inputtype="file"name="upimage"size="30"></td>
</tr>
<tr>
<td>目标尺寸:
<inputtype="radio"name="size"value="1"id="s1"><labelfor="s1">16
16
<inputtype="radio"name="size"value="2"id="s2"checked><labelfor="s2">3232
<inputtype="radio"name="size"value="3"id="s3"><labelfor="s3">48
48
</td>
</tr>
<tr>
<tdalign="right"><inputtype="submit"value="生 成"></td>
</tr>
<?PHP
if($output){
echo"<tr><td><divstyle=\"border:1pxsolid#D8D8B2;background-color:#FFFFDD;padding:10px\">".$output." </td></tr>";
}
?>
<tr>
<td><divstyle="color:#cccccc;font-size:11px;">Poweredby<ahref="
http://veryim.com"style="color:#cccccc">非常爱漫 </td>
</tr>
</table>
PHPthumb.ico.
PHP<div class="codetitle">
<a style="CURSOR: pointer" data="65988" class="copybut" id="copybut65988" onclick="doCopy('code65988')"> 代码如下: <div class="codebody" id="code65988">
<?
PHP//////////////////////////////////////////////////////////////
///
PHPThumb()byJamesHeinrich
info@silisoftware.com//
//availableathttp://
PHPthumb.sourceforge.net///
//////////////////////////////////////////////////////////////
/////
//
PHPthumb.ico.
PHP-.ICOoutputformatfunctions//
/////
//////////////////////////////////////////////////////////////
class
PHPthumb_ico{function
PHPthumb_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<$ImageWidths[$key];$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<strlen($scanlinemaskbits);$i+=8){
$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,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,$y){
if(!is_resource($img)){
returnfalse;
}
return@ImageColorsForIndex($img,@ImageColorAt($img,$y));
}}?>