首页 > 开发 > PHP > 正文

PHP基于yii框架实现生成ICO图标

2024-05-04 23:40:20
字体:
来源:转载
供稿:网友

本文给大家分享了2则php生成ICO图标的代码,第一款是基于YII框架实现的,第二款是纯php编写,都非常的不错,有需要的小伙伴可以参考下

1,phpthumb_ico 是生成ICO图标的类,源码如下

 

 
  1. class phpthumb_ico { 
  2.  
  3. function phpthumb_ico() { 
  4. return true
  5.  
  6.  
  7. function GD2ICOstring(&$gd_image_array) { 
  8. foreach ($gd_image_array as $key => $gd_image) { 
  9.  
  10. $ImageWidths[$key] = ImageSX($gd_image); 
  11. $ImageHeights[$key] = ImageSY($gd_image); 
  12. $bpp[$key] = ImageIsTrueColor($gd_image) ? 32 : 24; 
  13. $totalcolors[$key] = ImageColorsTotal($gd_image); 
  14.  
  15. $icXOR[$key] = ''
  16. for ($y = $ImageHeights[$key] - 1; $y >= 0; $y--) { 
  17. for ($x = 0; $x < $ImageWidths[$key]; $x++) { 
  18. $argb = $this->GetPixelColor($gd_image, $x, $y); 
  19. $a = round(255 * ((127 - $argb['alpha']) / 127)); 
  20. $r = $argb['red']; 
  21. $g = $argb['green']; 
  22. $b = $argb['blue']; 
  23.  
  24. if ($bpp[$key] == 32) { 
  25. $icXOR[$key] .= chr($b).chr($g).chr($r).chr($a); 
  26. } elseif ($bpp[$key] == 24) { 
  27. $icXOR[$key] .= chr($b).chr($g).chr($r); 
  28.  
  29. if ($a < 128) { 
  30. @$icANDmask[$key][$y] .= '1'
  31. else { 
  32. @$icANDmask[$key][$y] .= '0'
  33. // mask bits are 32-bit aligned per scanline 
  34. while (strlen($icANDmask[$key][$y]) % 32) { 
  35. $icANDmask[$key][$y] .= '0'
  36. $icAND[$key] = ''
  37. foreach ($icANDmask[$key] as $y => $scanlinemaskbits) { 
  38. for ($i = 0; $i < strlen($scanlinemaskbits); $i += 8) { 
  39. $icAND[$key] .= chr(bindec(str_pad(substr($scanlinemaskbits, $i, 8), 8, '0', STR_PAD_LEFT))); 
  40.  
  41.  
  42. foreach ($gd_image_array as $key => $gd_image) { 
  43. $biSizeImage = $ImageWidths[$key] * $ImageHeights[$key] * ($bpp[$key] / 8); 
  44.  
  45. // BITMAPINFOHEADER - 40 bytes 
  46. $BitmapInfoHeader[$key] = ''
  47. $BitmapInfoHeader[$key] .= "/x28/x00/x00/x00"// DWORD biSize; 
  48. $BitmapInfoHeader[$key] .= $this->LittleEndian2String($ImageWidths[$key], 4); // LONG biWidth; 
  49. // The biHeight member specifies the combined 
  50. // height of the XOR and AND masks. 
  51. $BitmapInfoHeader[$key] .= $this->LittleEndian2String($ImageHeights[$key] * 2, 4); // LONG biHeight; 
  52. $BitmapInfoHeader[$key] .= "/x01/x00"// WORD biPlanes; 
  53. $BitmapInfoHeader[$key] .= chr($bpp[$key])."/x00"// wBitCount; 
  54. $BitmapInfoHeader[$key] .= "/x00/x00/x00/x00"// DWORD biCompression; 
  55. $BitmapInfoHeader[$key] .= $this->LittleEndian2String($biSizeImage, 4); // DWORD biSizeImage; 
  56. $BitmapInfoHeader[$key] .= "/x00/x00/x00/x00"// LONG biXPelsPerMeter; 
  57. $BitmapInfoHeader[$key] .= "/x00/x00/x00/x00"// LONG biYPelsPerMeter; 
  58. $BitmapInfoHeader[$key] .= "/x00/x00/x00/x00"// DWORD biClrUsed; 
  59. $BitmapInfoHeader[$key] .= "/x00/x00/x00/x00"// DWORD biClrImportant; 
  60.  
  61.  
  62. $icondata = "/x00/x00"// idReserved; // Reserved (must be 0) 
  63. $icondata .= "/x01/x00"// idType; // Resource Type (1 for icons) 
  64. $icondata .= $this->LittleEndian2String(count($gd_image_array), 2); // idCount; // How many images? 
  65.  
  66. $dwImageOffset = 6 + (count($gd_image_array) * 16); 
  67. foreach ($gd_image_array as $key => $gd_image) { 
  68. // ICONDIRENTRY idEntries[1]; // An entry for each image (idCount of 'em) 
  69.  
  70. $icondata .= chr($ImageWidths[$key]); // bWidth; // Width, in pixels, of the image 
  71. $icondata .= chr($ImageHeights[$key]); // bHeight; // Height, in pixels, of the image 
  72. $icondata .= chr($totalcolors[$key]); // bColorCount; // Number of colors in image (0 if >=8bpp) 
  73. $icondata .= "/x00"// bReserved; // Reserved ( must be 0) 
  74.  
  75. $icondata .= "/x01/x00"// wPlanes; // Color Planes 
  76. $icondata .= chr($bpp[$key])."/x00"// wBitCount; // Bits per pixel 
  77.  
  78. $dwBytesInRes = 40 + strlen($icXOR[$key]) + strlen($icAND[$key]); 
  79. $icondata .= $this->LittleEndian2String($dwBytesInRes, 4); // dwBytesInRes; // How many bytes in this resource? 
  80.  
  81. $icondata .= $this->LittleEndian2String($dwImageOffset, 4); // dwImageOffset; // Where in the file is this image? 
  82. $dwImageOffset += strlen($BitmapInfoHeader[$key]); 
  83. $dwImageOffset += strlen($icXOR[$key]); 
  84. $dwImageOffset += strlen($icAND[$key]); 
  85.  
  86. foreach ($gd_image_array as $key => $gd_image) { 
  87. $icondata .= $BitmapInfoHeader[$key]; 
  88. $icondata .= $icXOR[$key]; 
  89. $icondata .= $icAND[$key]; 
  90.  
  91. return $icondata; 
  92.  
  93. function LittleEndian2String($number, $minbytes=1) { 
  94. $intstring = ''
  95. while ($number > 0) { 
  96. $intstring = $intstring.chr($number & 255); 
  97. $number >>= 8; 
  98. return str_pad($intstring, $minbytes, "/x00", STR_PAD_RIGHT); 
  99.  
  100. function GetPixelColor(&$img, $x, $y) { 
  101. if (!is_resource($img)) { 
  102. return false
  103. return @ImageColorsForIndex($img, @ImageColorAt($img, $x, $y)); 
  104.  

2,后台

引入类:

 

 
  1. Yii::$enableIncludePath = false
  2. Yii::import ( 'application.extensions.ico.phpthumb_ico', 1 ); 

解决生成黑色背景的问题

imagealphablending($resize_im, false);//不合并颜色,直接用$im图像颜色替换,包括透明色

imagesavealpha($resize_im, true);//不要丢了$resize_im图像的透明色

完整方法:

 

 
  1. /** 
  2. * icoMaker 在线生成ICO图标 
  3. * @author flashalliance 
  4. */ 
  5. public function actionIco() { 
  6. $this->breadcrumbs=array_merge($this->breadcrumbs,array( 
  7. 'ICO图标制作' 
  8. )); 
  9. $output = ""
  10. $errors=array(); 
  11. if(isset($_GET['action'])&&$_GET['action'] == 'make'){ 
  12. if(isset($_FILES['upimage']['tmp_name']) && $_FILES['upimage']['tmp_name'] && is_uploaded_file($_FILES['upimage']['tmp_name'])){ 
  13. if($_FILES['upimage']['size']>204800){ 
  14. $errors[]="你上传的文件过大,最大不能超过200K。"
  15. $fileext = array("image/pjpeg","image/jpeg","image/gif","image/x-png","image/png"); 
  16. if(!in_array($_FILES['upimage']['type'],$fileext)){ 
  17. $errors[]="你上传的文件格式不正确,仅支持 png, jpg, gif格式。"
  18. if($im = @imagecreatefrompng($_FILES['upimage']['tmp_name']) or $im = @imagecreatefromgif($_FILES['upimage']['tmp_name']) or $im = @imagecreatefromjpeg($_FILES['upimage']['tmp_name'])){ 
  19. $imginfo = @getimagesize($_FILES['upimage']['tmp_name']); 
  20. if(!is_array($imginfo)){ 
  21. $errors[]="图像格式错误!"
  22. if(empty($errors)){ 
  23. switch($_POST['size']){ 
  24. case 1; 
  25. $resize_im = @imagecreatetruecolor(16,16); 
  26. $size = 16; 
  27. break
  28. case 2; 
  29. $resize_im = @imagecreatetruecolor(32,32); 
  30. $size = 32; 
  31. break
  32. case 3; 
  33. $resize_im = @imagecreatetruecolor(48,48); 
  34. $size = 48; 
  35. break
  36. default
  37. $resize_im = @imagecreatetruecolor(32,32); 
  38. $size = 32; 
  39. break
  40.  
  41. imagesavealpha($im, true); 
  42. imagealphablending($resize_im, false);//不合并颜色,直接用$im图像颜色替换,包括透明色 
  43. imagesavealpha($resize_im, true);//不要丢了$resize_im图像的透明色,解决生成黑色背景的问题 
  44. imagecopyresampled($resize_im,$im,0,0,0,0,$size,$size,$imginfo[0],$imginfo[1]); 
  45.  
  46. Yii::$enableIncludePath = false
  47. Yii::import ( 'application.extensions.ico.phpthumb_ico', 1 ); 
  48. $icon = new phpthumb_ico(); 
  49. $gd_image_array = array($resize_im); 
  50. $icon_data = $icon->GD2ICOstring($gd_image_array); 
  51. $bas_path=dirname ( Yii::app ()->BasePath ); 
  52. $bas_new_path=$bas_path.'/upload/ico/'
  53. if(!is_dir($bas_new_path)){ 
  54. mkdir($bas_new_path, 0777, true); 
  55. $filePath=$bas_new_path. date("Ymdhis").uniqid(). rand(1,1000) . ".ico"
  56. if(file_put_contents($filePath, $icon_data)){ 
  57. $output = str_replace($bas_path,'',$filePath); 
  58. }else
  59. $errors[]="生成错误请重试!"
  60. $this->render ( 'ico',array('output'=>$output,'errors'=>$errors)); 

3,前台

 

 
  1. <div class="col-md-12"
  2. <div class="form-horizontal panel panel-default margin-t-10 b-img"
  3. <div class="panel-heading"
  4. <div class="pull-left"><span class="g-bg glyphicon glyphicon-wrench margin-r-2" aria-hidden="true"></span>在线制作ICO图标</div> 
  5. <div class="clearfix"></div> 
  6. </div> 
  7. <?php 
  8. $form = $this->beginWidget ( 'CActiveForm', array ( 
  9. 'id' => 'ico-form'
  10. 'htmlOptions' => array ( 
  11. 'id' => 'view_table'
  12. 'class' => 'add-form padding-10'
  13. 'enctype'=>'multipart/form-data' 
  14. ), 
  15. 'action'=>'/tool/ico?action=make'
  16. 'enableAjaxValidation' => false 
  17. ) ); 
  18. ?> 
  19. <div class="form-group"
  20. <label class="col-lg-2 control-label">上传文件</label> 
  21. <div class="col-md-5"
  22. <div class="col-md-6"
  23. <input id="upimage" type="file" name="upimage" class="hidden"
  24. <input id="tmp_file" class="form-control" type="text"
  25. </div> 
  26. <div class="col-md-6"><a class="btn btn-default" onclick="$('input[id=upimage]').click();">选择文件</a></div> 
  27. </div> 
  28. </div> 
  29. <div class="form-group"
  30. <label class="col-lg-2 text-right">选择尺寸</label> 
  31. <div class="col-lg-5 btn-group" data-toggle="buttons"
  32. <label class="btn btn-sm btn-default"
  33. <input type="radio" name="size" id="s1" value="1" checked="checked"> 16*16 
  34. </label> 
  35. <label class="btn btn-sm btn-default"
  36. <input type="radio" name="size" id="s2" value="2"> 32*32 
  37. </label> 
  38. <label class="btn btn-sm btn-default"
  39. <input type="radio" name="size" id="s3" value="3"> 48*48 
  40. </label> 
  41. </div> 
  42. </div> 
  43. <div class="form-group"
  44. <label class="col-lg-2 text-right">支持格式</label> 
  45. <div class="col-lg-5"
  46. png,jpg,gif 
  47. </div> 
  48. </div> 
  49. <div class="list_back"
  50. <input type="submit" value="生 成" class="btn btn-success"
  51. </div> 
  52. </div> 
  53. <?php $this->endWidget(); ?> 
  54. <?php if(!empty($errors) or !empty($output)):?> 
  55. <div class="form-horizontal panel panel-default margin-t-10 b-img"
  56. <div class="panel-heading margin-b-10"
  57. <div class="pull-left"><span class="g-bg glyphicon glyphicon-wrench margin-r-2" aria-hidden="true"></span>生成结果</div> 
  58. <div class="clearfix"></div> 
  59. </div> 
  60. <?php if(!empty($errors)):?> 
  61. <div class="form-group"
  62. <label class="col-lg-2 text-right">生成失败</label> 
  63. <div class="col-lg-5"
  64. <?php foreach ($errors as $e):?> 
  65. <?php echo $e;?><br> 
  66. <?php endforeach;?> 
  67. </div> 
  68. </div> 
  69. <?php endif;?> 
  70. <?PHP if (!empty($output)):?> 
  71. <?php 
  72. $form = $this->beginWidget ( 'CActiveForm', array ( 
  73. 'id' => 'ico-form'
  74. 'htmlOptions' => array ( 
  75. 'id' => 'view_table'
  76. 'class' => 'add-form padding-10'
  77. ), 
  78. 'action'=>'/tool/icoDownload'
  79. 'enableAjaxValidation' => false 
  80. ) ); 
  81. ?> 
  82. <?php echo CHtml::hiddenField('filePath',$output);?> 
  83. <div class="form-group"
  84. <label class="col-lg-2 text-right">成功生成</label> 
  85. <div class="col-lg-5"
  86. <img alt="在线制作ICO图标_favicon.ico" src="<?php echo $output;?>" class="margin-r-10"
  87. <input type="submit" value="立即下载" class="btn btn-sm btn-success margin-l-10"
  88. </div> 
  89. </div> 
  90. <?php $this->endWidget(); ?> 
  91. <?php endif;?> 
  92. </div> 
  93. <?php endif;?> 
  94. </div> 
  95. <!-- form --> 

再给大家分享一个独立的类

phpthumb.ico.php

 

 
  1. <?php  
  2. //////////////////////////////////////////////////////////////  
  3. /// phpThumb() by James Heinrich <info@silisoftware.com> //  
  4. // available at http://phpthumb.sourceforge.net ///  
  5. //////////////////////////////////////////////////////////////  
  6. /// //  
  7. // phpthumb.ico.php - .ICO output format functions //  
  8. // ///  
  9. //////////////////////////////////////////////////////////////  
  10. class phpthumb_ico {  
  11. function phpthumb_ico() {  
  12. return true;  
  13. }  
  14. function GD2ICOstring(&$gd_image_array) {  
  15. foreach ($gd_image_array as $key => $gd_image) {  
  16. $ImageWidths[$key] = ImageSX($gd_image);  
  17. $ImageHeights[$key] = ImageSY($gd_image);  
  18. $bpp[$key] = ImageIsTrueColor($gd_image) ? 32 : 24;  
  19. $totalcolors[$key] = ImageColorsTotal($gd_image);  
  20. $icXOR[$key] = '';  
  21. for ($y = $ImageHeights[$key] - 1; $y >= 0; $y--) {  
  22. for ($x = 0; $x < $ImageWidths[$key]; $x++) {  
  23. $argb = $this->GetPixelColor($gd_image, $x, $y);  
  24. $a = round(255 * ((127 - $argb['alpha']) / 127));  
  25. $r = $argb['red'];  
  26. $g = $argb['green'];  
  27. $b = $argb['blue'];  
  28. if ($bpp[$key] == 32) {  
  29. $icXOR[$key] .= chr($b).chr($g).chr($r).chr($a);  
  30. } elseif ($bpp[$key] == 24) {  
  31. $icXOR[$key] .= chr($b).chr($g).chr($r);  
  32. }  
  33. if ($a < 128) {  
  34. @$icANDmask[$key][$y] .= '1';  
  35. else {  
  36. @$icANDmask[$key][$y] .= '0';  
  37. }  
  38. }  
  39. // mask bits are 32-bit aligned per scanline  
  40. while (strlen($icANDmask[$key][$y]) % 32) {  
  41. $icANDmask[$key][$y] .= '0';  
  42. }  
  43. }  
  44. $icAND[$key] = '';  
  45. foreach ($icANDmask[$key] as $y => $scanlinemaskbits) {  
  46. for ($i = 0; $i < strlen($scanlinemaskbits); $i += 8) {  
  47. $icAND[$key] .= chr(bindec(str_pad(substr($scanlinemaskbits, $i, 8), 8, '0', STR_PAD_LEFT)));  
  48. }  
  49. }  
  50. }  
  51. foreach ($gd_image_array as $key => $gd_image) {  
  52. $biSizeImage = $ImageWidths[$key] * $ImageHeights[$key] * ($bpp[$key] / 8);  
  53. // BITMAPINFOHEADER - 40 bytes  
  54. $BitmapInfoHeader[$key] = '';  
  55. $BitmapInfoHeader[$key] .= "/x28/x00/x00/x00"// DWORD biSize;  
  56. $BitmapInfoHeader[$key] .= $this->LittleEndian2String($ImageWidths[$key], 4); // LONG biWidth;  
  57. // The biHeight member specifies the combined  
  58. // height of the XOR and AND masks.  
  59. $BitmapInfoHeader[$key] .= $this->LittleEndian2String($ImageHeights[$key] * 2, 4); // LONG biHeight;  
  60. $BitmapInfoHeader[$key] .= "/x01/x00"// WORD biPlanes;  
  61. $BitmapInfoHeader[$key] .= chr($bpp[$key])."/x00"// wBitCount;  
  62. $BitmapInfoHeader[$key] .= "/x00/x00/x00/x00"// DWORD biCompression;  
  63. $BitmapInfoHeader[$key] .= $this->LittleEndian2String($biSizeImage, 4); // DWORD biSizeImage;  
  64. $BitmapInfoHeader[$key] .= "/x00/x00/x00/x00"// LONG biXPelsPerMeter;  
  65. $BitmapInfoHeader[$key] .= "/x00/x00/x00/x00"// LONG biYPelsPerMeter;  
  66. $BitmapInfoHeader[$key] .= "/x00/x00/x00/x00"// DWORD biClrUsed;  
  67. $BitmapInfoHeader[$key] .= "/x00/x00/x00/x00"// DWORD biClrImportant;  
  68. }  
  69. $icondata = "/x00/x00"// idReserved; // Reserved (must be 0)  
  70. $icondata .= "/x01/x00"// idType; // Resource Type (1 for icons)  
  71. $icondata .= $this->LittleEndian2String(count($gd_image_array), 2); // idCount; // How many images?  
  72. $dwImageOffset = 6 + (count($gd_image_array) * 16);  
  73. foreach ($gd_image_array as $key => $gd_image) {  
  74. // ICONDIRENTRY idEntries[1]; // An entry for each image (idCount of 'em)  
  75. $icondata .= chr($ImageWidths[$key]); // bWidth; // Width, in pixels, of the image  
  76. $icondata .= chr($ImageHeights[$key]); // bHeight; // Height, in pixels, of the image  
  77. $icondata .= chr($totalcolors[$key]); // bColorCount; // Number of colors in image (0 if >=8bpp)  
  78. $icondata .= "/x00"// bReserved; // Reserved ( must be 0)  
  79. $icondata .= "/x01/x00"// wPlanes; // Color Planes  
  80. $icondata .= chr($bpp[$key])."/x00"// wBitCount; // Bits per pixel  
  81. $dwBytesInRes = 40 + strlen($icXOR[$key]) + strlen($icAND[$key]);  
  82. $icondata .= $this->LittleEndian2String($dwBytesInRes, 4); // dwBytesInRes; // How many bytes in this resource?  
  83. $icondata .= $this->LittleEndian2String($dwImageOffset, 4); // dwImageOffset; // Where in the file is this image?  
  84. $dwImageOffset += strlen($BitmapInfoHeader[$key]);  
  85. $dwImageOffset += strlen($icXOR[$key]);  
  86. $dwImageOffset += strlen($icAND[$key]);  
  87. }  
  88. foreach ($gd_image_array as $key => $gd_image) {  
  89. $icondata .= $BitmapInfoHeader[$key];  
  90. $icondata .= $icXOR[$key];  
  91. $icondata .= $icAND[$key];  
  92. }  
  93. return $icondata;  
  94. }  
  95. function LittleEndian2String($number, $minbytes=1) {  
  96. $intstring = '';  
  97. while ($number > 0) {  
  98. $intstring = $intstring.chr($number & 255);  
  99. $number >>= 8;  
  100. }  
  101. return str_pad($intstring, $minbytes, "/x00", STR_PAD_RIGHT);  
  102. }  
  103. function GetPixelColor(&$img, $x, $y) {  
  104. if (!is_resource($img)) {  
  105. return false;  
  106. }  
  107. return @ImageColorsForIndex($img, @ImageColorAt($img, $x, $y));  
  108. }  
  109. }  
  110. ?> 

index.php

 

 
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
  2. <html xmlns="http://www.w3.org/1999/xhtml"
  3. <head>  
  4. <title>ico图标</title> 
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  6. </head>  
  7. <body>  
  8. <div class="center"
  9. <?PHP  
  10. $output = "";  
  11. if(isset($_GET['action'])&&$_GET['action'] == 'make'){  
  12. if(isset($_FILES['upimage']['tmp_name']) && $_FILES['upimage']['tmp_name'] && is_uploaded_file($_FILES['upimage']['tmp_name'])){  
  13. if($_FILES['upimage']['type']>210000){  
  14. echo "你上传的文件体积超过了限制 最大不能超过200K";  
  15. exit();  
  16. }  
  17. $fileext = array("image/pjpeg","image/gif","image/x-png","image/png","image/jpeg","image/jpg");  
  18. if(!in_array($_FILES['upimage']['type'],$fileext)){  
  19. echo "你上传的文件格式不正确 仅支持 jpg,gif,png";  
  20. exit();  
  21. }  
  22. if($im = @imagecreatefrompng($_FILES['upimage']['tmp_name']) or $im = @imagecreatefromgif($_FILES['upimage']['tmp_name']) or $im = @imagecreatefromjpeg($_FILES['upimage']['tmp_name'])){  
  23. $imginfo = @getimagesize($_FILES['upimage']['tmp_name']);  
  24. if(!is_array($imginfo)){  
  25. echo "图形格式错误!";  
  26. }  
  27. switch($_POST['size']){  
  28. case 1;  
  29. $resize_im = @imagecreatetruecolor(16,16);  
  30. $size = 16;  
  31. break;  
  32. case 2;  
  33. $resize_im = @imagecreatetruecolor(32,32);  
  34. $size = 32;  
  35. break;  
  36. case 3;  
  37. $resize_im = @imagecreatetruecolor(48,48);  
  38. $size = 48;  
  39. break;  
  40. default;  
  41. $resize_im = @imagecreatetruecolor(32,32);  
  42. $size = 32;  
  43. break;  
  44. }  
  45. imagecopyresampled($resize_im,$im,0,0,0,0,$size,$size,$imginfo[0],$imginfo[1]);  
  46. include "phpthumb.ico.php";  
  47. $icon = new phpthumb_ico();  
  48. $gd_image_array = array($resize_im);  
  49. $icon_data = $icon->GD2ICOstring($gd_image_array);  
  50. $filename = "temp/".date("Ymdhis").rand(1,1000).".ico";  
  51. if(file_put_contents($filename, $icon_data)){  
  52. $output = "生成成功!请点右键->另存为 保存到本地<br><a href="/" mce_href="/""".$filename."/" target=/"_blank/">点击下载</a>";  
  53. }  
  54. }else{  
  55. echo "生成错误请重试!";  
  56. }  
  57. }  
  58. }  
  59. ?>  
  60. <form action="index.php?action=make" method="post" enctype='multipart/form-data'>  
  61. <table width="90%" align="center">  
  62. <tr>  
  63. <td height="40"><h3>请上传你要转换成.<a href="http://ico.sevem.cn" mce_href="http://ico.sevem.cn" target="_blank">ico</a>的图片</h3> 
  64. 支持格式 png、jpg、gif在线转换成.<a href="http://ico.sevem.cn" mce_href="http://ico.sevem.cn" target="_blank">ico</a>图标。如何你想制作更丰富的.<a href="http://ico.sevem.cn" mce_href="http://ico.sevem.cn" target="_blank">ico</a>图标请<a href="#ico" mce_href="#ico">下载ICO制作软件</a></td>  
  65. </tr>  
  66. <tr>  
  67. <td height="40"><input type="file" name="upimage" size="30">目标尺寸:  
  68. <input type="radio" name="size" value="1" id="s1"><label for="s1">16*16</label>  
  69. <input type="radio" name="size" value="2" id="s2" checked><label for="s2">32*32</label>  
  70. <input type="radio" name="size" value="3" id="s3"><label for="s3">48*48</label>  
  71. </td>  
  72. </tr>  
  73.  
  74. <tr>  
  75. <td height="40" align="center"><input type="submit" style="width:150px; height:30px;" value="在线生成favicon.ico图标"></td>  
  76. </tr>  
  77. <?PHP  
  78. if($output){  
  79. echo "<tr><td><div style="/" mce_style="/""border:1px solid #D8D8B2;background-color:#FFFFDD;padding:10px/">".$output."</div></td></tr>";  
  80. }  
  81. ?>  
  82. </table>  
  83. <div style="display:none" mce_style="display:none"
  84. <?php  
  85. $doc = new DOMDocument();  
  86. $doc->load( 'http://link.qim.net.cn/xml.xml' );  
  87.  
  88. $links = $doc->getElementsByTagName( "link" );  
  89. foreach( $links as $link )  
  90. {  
  91. $publishers = $link->getElementsByTagName( "homepage" );  
  92. $homepage = $publishers->item(0)->nodeValue;  
  93.  
  94. $titles = $link->getElementsByTagName( "title" );  
  95. $title = $titles->item(0)->nodeValue;  
  96.  
  97. $contents = $link->getElementsByTagName( "content" );  
  98. $content = $contents->item(0)->nodeValue;  
  99.  
  100. echo "<a href="$homepage" mce_href="$homepage" title='$content' target='_blank' ></a>$title</a><br>";  
  101. }  
  102. ?>  
  103. </div> 
  104. </form>  
  105.  
  106. </body>  
  107. </html> 


注:相关教程知识阅读请移步到PHP教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表