欢迎来到福编程网,本站提供各种互联网专业知识!

php在线生成ico文件的代码

发布时间:2007-10-09 作者: 来源:转载
index.php复制代码代码如下: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,
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图标在线转换



ICO图标在线转换
















if($output){
echo"";
}
?>



请上传你要转换的图片

支持格式png,jpg,gif

目标尺寸:
16*16
32*32
48*48
".$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<$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$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,inpixels,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,$x,$y){
if(!is_resource($img)){
returnfalse;
}
return@ImageColorsForIndex($img,@ImageColorAt($img,$x,$y));
}

}

?>

相关推荐