php在线生成ico文件的代码
index.php 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">1616 <inputtype="radio"name="size"value="2"id="s2"checked><labelfor="s2">3232 <inputtype="radio"name="size"value="3"id="s3"><labelfor="s3">4848 </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()byJamesHeinrichinfo@silisoftware.com// //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<$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].="x28x00x00x00";//DWORDbiSize; $BitmapInfoHeader[$key].=$this->LittleEndian2String($ImageWidths[$key],4);//LONGbiWidth; //ThebiHeightmemberspecifiesthecombined //heightoftheXORandANDmasks. $BitmapInfoHeader[$key].=$this->LittleEndian2String($ImageHeights[$key]2,4);//LONGbiHeight; $BitmapInfoHeader[$key].="x01x00";//WORDbiPlanes; $BitmapInfoHeader[$key].=chr($bpp[$key])."x00";//wBitCount; $BitmapInfoHeader[$key].="x00x00x00x00";//DWORDbiCompression; $BitmapInfoHeader[$key].=$this->LittleEndian2String($biSizeImage,4);//DWORDbiSizeImage; $BitmapInfoHeader[$key].="x00x00x00x00";//LONGbiXPelsPerMeter; $BitmapInfoHeader[$key].="x00x00x00x00";//LONGbiYPelsPerMeter; $BitmapInfoHeader[$key].="x00x00x00x00";//DWORDbiClrUsed; $BitmapInfoHeader[$key].="x00x00x00x00";//DWORDbiClrImportant; } $icondata="x00x00";//idReserved;//Reserved(mustbe0) $icondata.="x01x00";//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.="x01x00";//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)); }}?> (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |