当前位置: 首页 > news >正文

用户浏览网站的习惯百度优化网站建设

用户浏览网站的习惯,百度优化网站建设,网站如何注销,手机如何制作软件app前言 需求源自项目中的一些应用#xff0c;比如相册功能#xff0c;通常用户上传相片后我们都会针对该相片再生成一张缩略图#xff0c;用于其它页面上的列表显示。随便看一下#xff0c;大部分网站基本都是将原图等比缩放来生成缩略图。但完美主义者会发现一些问题#…前言 需求源自项目中的一些应用比如相册功能通常用户上传相片后我们都会针对该相片再生成一张缩略图用于其它页面上的列表显示。随便看一下大部分网站基本都是将原图等比缩放来生成缩略图。但完美主义者会发现一些问题比如显示排版时想让相片缩略图列表非常统一、整齐、和美观比如要求每张缩略图大小固定为120 x 90且不拉伸变形怎么办再比如用户头像如何让缩略图比原图更清晰或是如何在上传的图片下加一个半透明的LOGO水印 OK本文根据自己的项目代码描述以上问题的解决方案全部基于.Net Framework类库完成代码中包含了C#图片处理的一些基础知识与大家分享个人能力有限不足之处还请及时指正。 提高缩略图清晰度 (原图200*200,12.3k)(处理后80*80,17.7k) 之前一直认为缩略图不可能比原图清晰直到某天一位产品的同事给我看某网站的效果。于是开始寻找.NET下实现代码仔细观察缩略图确实比原图更清晰了一些但代价是缩略图文件比原图更大所以如果你想让一张占满显示器屏幕的超大图片更清晰那么图片占用空间和网络流量就必需考虑了如果是互联网应用建议缩略图在200像素以内的使用该方法。当然如果哪位有更好的代码即能让图片文件大小变化不大又让图片更清晰还请分享。 图片裁剪 (原图256*192)(裁剪要求100*100) (原图256*192)(裁剪要求90*120) (原图256*192)(裁剪要求120*90) (原图146*256) (裁剪要求100*100)(原图146*256)(裁剪要求90*120) (原图146*256)(裁剪要求120*90) 算法以原图中心作为裁剪中心最大范围的对原图进行裁剪然后对裁剪结果等比缩放。 图片水印 仅演示了效果如需要变更字体、水印透明度、位置等可自行在代码或方法中扩展。 代码 封装了几个通用的方法如发现有BUG或漏洞还请及时指正。 using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; namespace WuJian.Common { /// summary /// 图片处理类 /// 吴剑 2008-07-02 创建 /// 吴剑 2011-01-21 修改 /// /summary public class PTImage { #region 正方型裁剪并缩放 /// summary /// 正方型裁剪 /// 以图片中心为轴心截取正方型然后等比缩放 /// 用于头像处理 /// /summary /// remarks吴剑 2010-11-23/remarks /// param namepostedFile原图HttpPostedFile对象/param /// param namefileSaveUrl缩略图存放地址/param /// param nameside指定的边长正方型/param /// param namequality质量范围0-100/param public static void CutForSquare(System.Web.HttpPostedFile postedFile, string fileSaveUrl, int side, int quality) { //创建目录 string dir Path.GetDirectoryName(fileSaveUrl); if (!Directory.Exists(dir)) Directory.CreateDirectory(dir); //原始图片获取原始图片创建对象并使用流中嵌入的颜色管理信息 System.Drawing.Image initImage System.Drawing.Image.FromStream(postedFile.InputStream, true); //原图宽高均小于模版不作处理直接保存 if (initImage.Width side initImage.Height side) { initImage.Save(fileSaveUrl, System.Drawing.Imaging.ImageFormat.Jpeg); } else { //原始图片的宽、高 int initWidth initImage.Width; int initHeight initImage.Height; //非正方型先裁剪为正方型 if (initWidth ! initHeight) { //截图对象 System.Drawing.Image pickedImage null; System.Drawing.Graphics pickedG null; //宽大于高的横图 if (initWidth initHeight) { //对象实例化 pickedImage new System.Drawing.Bitmap(initHeight, initHeight); pickedG System.Drawing.Graphics.FromImage(pickedImage); //设置质量 pickedG.InterpolationMode System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; pickedG.SmoothingMode System.Drawing.Drawing2D.SmoothingMode.HighQuality; //定位 Rectangle fromR new Rectangle((initWidth - initHeight) / 2, 0, initHeight, initHeight); Rectangle toR new Rectangle(0, 0, initHeight, initHeight); //画图 pickedG.DrawImage(initImage, toR, fromR, System.Drawing.GraphicsUnit.Pixel); //重置宽 initWidth initHeight; } //高大于宽的竖图 else { //对象实例化 pickedImage new System.Drawing.Bitmap(initWidth, initWidth); pickedG System.Drawing.Graphics.FromImage(pickedImage); //设置质量 pickedG.InterpolationMode System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; pickedG.SmoothingMode System.Drawing.Drawing2D.SmoothingMode.HighQuality; //定位 Rectangle fromR new Rectangle(0, (initHeight - initWidth) / 2, initWidth, initWidth); Rectangle toR new Rectangle(0, 0, initWidth, initWidth); //画图 pickedG.DrawImage(initImage, toR, fromR, System.Drawing.GraphicsUnit.Pixel); //重置高 initHeight initWidth; } //将截图对象赋给原图 initImage (System.Drawing.Image)pickedImage.Clone(); //释放截图资源 pickedG.Dispose(); pickedImage.Dispose(); } //缩略图对象 System.Drawing.Image resultImage new System.Drawing.Bitmap(side, side); System.Drawing.Graphics resultG System.Drawing.Graphics.FromImage(resultImage); //设置质量 resultG.InterpolationMode System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; resultG.SmoothingMode System.Drawing.Drawing2D.SmoothingMode.HighQuality; //用指定背景色清空画布 resultG.Clear(Color.White); //绘制缩略图 resultG.DrawImage(initImage, new System.Drawing.Rectangle(0, 0, side, side), new System.Drawing.Rectangle(0, 0, initWidth, initHeight), System.Drawing.GraphicsUnit.Pixel); //关键质量控制 //获取系统编码类型数组,包含了jpeg,bmp,png,gif,tiff ImageCodecInfo[] icis ImageCodecInfo.GetImageEncoders(); ImageCodecInfo ici null; foreach (ImageCodecInfo i in icis) { if (i.MimeType image/jpeg || i.MimeType image/bmp || i.MimeType image/png || i.MimeType image/gif) { ici i; } } EncoderParameters ep new EncoderParameters(1); ep.Param[0] new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)quality); //保存缩略图 resultImage.Save(fileSaveUrl, ici, ep); //释放关键质量控制所用资源 ep.Dispose(); //释放缩略图资源 resultG.Dispose(); resultImage.Dispose(); //释放原始图片资源 initImage.Dispose(); } } /// summary /// 正方型裁剪 /// 以图片中心为轴心截取正方型然后等比缩放 /// 用于头像处理 /// /summary /// remarks吴剑 2010-11-23/remarks /// param namepostedFile原图HttpPostedFile对象/param /// param namefileSaveUrl缩略图存放地址/param /// param nameside指定的边长正方型/param /// param namequality质量范围0-100/param public static void CutForSquare(System.IO.Stream fromFile, string fileSaveUrl, int side, int quality) { //创建目录 string dir Path.GetDirectoryName(fileSaveUrl); if (!Directory.Exists(dir)) Directory.CreateDirectory(dir); //原始图片获取原始图片创建对象并使用流中嵌入的颜色管理信息 System.Drawing.Image initImage System.Drawing.Image.FromStream(fromFile, true); //原图宽高均小于模版不作处理直接保存 if (initImage.Width side initImage.Height side) { initImage.Save(fileSaveUrl, System.Drawing.Imaging.ImageFormat.Jpeg); } else { //原始图片的宽、高 int initWidth initImage.Width; int initHeight initImage.Height; //非正方型先裁剪为正方型 if (initWidth ! initHeight) { //截图对象 System.Drawing.Image pickedImage null; System.Drawing.Graphics pickedG null; //宽大于高的横图 if (initWidth initHeight) { //对象实例化 pickedImage new System.Drawing.Bitmap(initHeight, initHeight); pickedG System.Drawing.Graphics.FromImage(pickedImage); //设置质量 pickedG.InterpolationMode System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; pickedG.SmoothingMode System.Drawing.Drawing2D.SmoothingMode.HighQuality; //定位 Rectangle fromR new Rectangle((initWidth - initHeight) / 2, 0, initHeight, initHeight); Rectangle toR new Rectangle(0, 0, initHeight, initHeight); //画图 pickedG.DrawImage(initImage, toR, fromR, System.Drawing.GraphicsUnit.Pixel); //重置宽 initWidth initHeight; } //高大于宽的竖图 else { //对象实例化 pickedImage new System.Drawing.Bitmap(initWidth, initWidth); pickedG System.Drawing.Graphics.FromImage(pickedImage); //设置质量 pickedG.InterpolationMode System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; pickedG.SmoothingMode System.Drawing.Drawing2D.SmoothingMode.HighQuality; //定位 Rectangle fromR new Rectangle(0, (initHeight - initWidth) / 2, initWidth, initWidth); Rectangle toR new Rectangle(0, 0, initWidth, initWidth); //画图 pickedG.DrawImage(initImage, toR, fromR, System.Drawing.GraphicsUnit.Pixel); //重置高 initHeight initWidth; } //将截图对象赋给原图 initImage (System.Drawing.Image)pickedImage.Clone(); //释放截图资源 pickedG.Dispose(); pickedImage.Dispose(); } //缩略图对象 System.Drawing.Image resultImage new System.Drawing.Bitmap(side, side); System.Drawing.Graphics resultG System.Drawing.Graphics.FromImage(resultImage); //设置质量 resultG.InterpolationMode System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; resultG.SmoothingMode System.Drawing.Drawing2D.SmoothingMode.HighQuality; //用指定背景色清空画布 resultG.Clear(Color.White); //绘制缩略图 resultG.DrawImage(initImage, new System.Drawing.Rectangle(0, 0, side, side), new System.Drawing.Rectangle(0, 0, initWidth, initHeight), System.Drawing.GraphicsUnit.Pixel); //关键质量控制 //获取系统编码类型数组,包含了jpeg,bmp,png,gif,tiff ImageCodecInfo[] icis ImageCodecInfo.GetImageEncoders(); ImageCodecInfo ici null; foreach (ImageCodecInfo i in icis) { if (i.MimeType image/jpeg || i.MimeType image/bmp || i.MimeType image/png || i.MimeType image/gif) { ici i; } } EncoderParameters ep new EncoderParameters(1); ep.Param[0] new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)quality); //保存缩略图 resultImage.Save(fileSaveUrl, ici, ep); //释放关键质量控制所用资源 ep.Dispose(); //释放缩略图资源 resultG.Dispose(); resultImage.Dispose(); //释放原始图片资源 initImage.Dispose(); } } #endregion #region 固定模版裁剪并缩放 /// summary /// 指定长宽裁剪 /// 按模版比例最大范围的裁剪图片并缩放至模版尺寸 /// /summary /// remarks吴剑 2010-11-15/remarks /// param namepostedFile原图HttpPostedFile对象/param /// param namefileSaveUrl保存路径/param /// param namemaxWidth最大宽(单位:px)/param /// param namemaxHeight最大高(单位:px)/param /// param namequality质量范围0-100/param public static void CutForCustom(System.Web.HttpPostedFile postedFile, string fileSaveUrl, int maxWidth, int maxHeight, int quality) { //从文件获取原始图片并使用流中嵌入的颜色管理信息 System.Drawing.Image initImage System.Drawing.Image.FromStream(postedFile.InputStream, true); //原图宽高均小于模版不作处理直接保存 if (initImage.Width maxWidth initImage.Height maxHeight) { initImage.Save(fileSaveUrl, System.Drawing.Imaging.ImageFormat.Jpeg); } else { //模版的宽高比例 double templateRate (double)maxWidth / maxHeight; //原图片的宽高比例 double initRate (double)initImage.Width / initImage.Height; //原图与模版比例相等直接缩放 if (templateRate initRate) { //按模版大小生成最终图片 System.Drawing.Image templateImage new System.Drawing.Bitmap(maxWidth, maxHeight); System.Drawing.Graphics templateG System.Drawing.Graphics.FromImage(templateImage); templateG.InterpolationMode System.Drawing.Drawing2D.InterpolationMode.High; templateG.SmoothingMode System.Drawing.Drawing2D.SmoothingMode.HighQuality; templateG.Clear(Color.White); templateG.DrawImage(initImage, new System.Drawing.Rectangle(0, 0, maxWidth, maxHeight), new System.Drawing.Rectangle(0, 0, initImage.Width, initImage.Height), System.Drawing.GraphicsUnit.Pixel); templateImage.Save(fileSaveUrl, System.Drawing.Imaging.ImageFormat.Jpeg); } //原图与模版比例不等裁剪后缩放 else { //裁剪对象 System.Drawing.Image pickedImage null; System.Drawing.Graphics pickedG null; //定位 Rectangle fromR new Rectangle(0, 0, 0, 0);//原图裁剪定位 Rectangle toR new Rectangle(0, 0, 0, 0);//目标定位 //宽为标准进行裁剪 if (templateRate initRate) { //裁剪对象实例化 pickedImage new System.Drawing.Bitmap(initImage.Width, (int)Math.Floor(initImage.Width / templateRate)); pickedG System.Drawing.Graphics.FromImage(pickedImage); //裁剪源定位 fromR.X 0; fromR.Y (int)Math.Floor((initImage.Height - initImage.Width / templateRate) / 2); fromR.Width initImage.Width; fromR.Height (int)Math.Floor(initImage.Width / templateRate); //裁剪目标定位 toR.X 0; toR.Y 0; toR.Width initImage.Width; toR.Height (int)Math.Floor(initImage.Width / templateRate); } //高为标准进行裁剪 else { pickedImage new System.Drawing.Bitmap((int)Math.Floor(initImage.Height * templateRate), initImage.Height); pickedG System.Drawing.Graphics.FromImage(pickedImage); fromR.X (int)Math.Floor((initImage.Width - initImage.Height * templateRate) / 2); fromR.Y 0; fromR.Width (int)Math.Floor(initImage.Height * templateRate); fromR.Height initImage.Height; toR.X 0; toR.Y 0; toR.Width (int)Math.Floor(initImage.Height * templateRate); toR.Height initImage.Height; } //设置质量 pickedG.InterpolationMode System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; pickedG.SmoothingMode System.Drawing.Drawing2D.SmoothingMode.HighQuality; //裁剪 pickedG.DrawImage(initImage, toR, fromR, System.Drawing.GraphicsUnit.Pixel); //按模版大小生成最终图片 System.Drawing.Image templateImage new System.Drawing.Bitmap(maxWidth, maxHeight); System.Drawing.Graphics templateG System.Drawing.Graphics.FromImage(templateImage); templateG.InterpolationMode System.Drawing.Drawing2D.InterpolationMode.High; templateG.SmoothingMode System.Drawing.Drawing2D.SmoothingMode.HighQuality; templateG.Clear(Color.White); templateG.DrawImage(pickedImage, new System.Drawing.Rectangle(0, 0, maxWidth, maxHeight), new System.Drawing.Rectangle(0, 0, pickedImage.Width, pickedImage.Height), System.Drawing.GraphicsUnit.Pixel); //关键质量控制 //获取系统编码类型数组,包含了jpeg,bmp,png,gif,tiff ImageCodecInfo[] icis ImageCodecInfo.GetImageEncoders(); ImageCodecInfo ici null; foreach (ImageCodecInfo i in icis) { if (i.MimeType image/jpeg || i.MimeType image/bmp || i.MimeType image/png || i.MimeType image/gif) { ici i; } } EncoderParameters ep new EncoderParameters(1); ep.Param[0] new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)quality); //保存缩略图 templateImage.Save(fileSaveUrl, ici, ep); //templateImage.Save(fileSaveUrl, System.Drawing.Imaging.ImageFormat.Jpeg); //释放资源 templateG.Dispose(); templateImage.Dispose(); pickedG.Dispose(); pickedImage.Dispose(); } } //释放资源 initImage.Dispose(); } #endregion #region 等比缩放 /// summary /// 图片等比缩放 /// /summary /// remarks吴剑 2011-01-21/remarks /// param namepostedFile原图HttpPostedFile对象/param /// param namesavePath缩略图存放地址/param /// param nametargetWidth指定的最大宽度/param /// param nametargetHeight指定的最大高度/param /// param namewatermarkText水印文字(为表示不使用水印)/param /// param namewatermarkImage水印图片路径(为表示不使用水印)/param public static void ZoomAuto(System.Web.HttpPostedFile postedFile, string savePath, System.Double targetWidth, System.Double targetHeight, string watermarkText, string watermarkImage) { //创建目录 string dir Path.GetDirectoryName(savePath); if (!Directory.Exists(dir)) Directory.CreateDirectory(dir); //原始图片获取原始图片创建对象并使用流中嵌入的颜色管理信息 System.Drawing.Image initImage System.Drawing.Image.FromStream(postedFile.InputStream, true); //原图宽高均小于模版不作处理直接保存 if (initImage.Width targetWidth initImage.Height targetHeight) { //文字水印 if (watermarkText ! ) { using (System.Drawing.Graphics gWater System.Drawing.Graphics.FromImage(initImage)) { System.Drawing.Font fontWater new Font(黑体, 10); System.Drawing.Brush brushWater new SolidBrush(Color.White); gWater.DrawString(watermarkText, fontWater, brushWater, 10, 10); gWater.Dispose(); } } //透明图片水印 if (watermarkImage ! ) { if (File.Exists(watermarkImage)) { //获取水印图片 using (System.Drawing.Image wrImage System.Drawing.Image.FromFile(watermarkImage)) { //水印绘制条件原始图片宽高均大于或等于水印图片 if (initImage.Width wrImage.Width initImage.Height wrImage.Height) { Graphics gWater Graphics.FromImage(initImage); //透明属性 ImageAttributes imgAttributes new ImageAttributes(); ColorMap colorMap new ColorMap(); colorMap.OldColor Color.FromArgb(255, 0, 255, 0); colorMap.NewColor Color.FromArgb(0, 0, 0, 0); ColorMap[] remapTable { colorMap }; imgAttributes.SetRemapTable(remapTable, ColorAdjustType.Bitmap); float[][] colorMatrixElements { new float[] {1.0f, 0.0f, 0.0f, 0.0f, 0.0f}, new float[] {0.0f, 1.0f, 0.0f, 0.0f, 0.0f}, new float[] {0.0f, 0.0f, 1.0f, 0.0f, 0.0f}, new float[] {0.0f, 0.0f, 0.0f, 0.5f, 0.0f},//透明度:0.5 new float[] {0.0f, 0.0f, 0.0f, 0.0f, 1.0f} }; ColorMatrix wmColorMatrix new ColorMatrix(colorMatrixElements); imgAttributes.SetColorMatrix(wmColorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap); gWater.DrawImage(wrImage, new Rectangle(initImage.Width - wrImage.Width, initImage.Height - wrImage.Height, wrImage.Width, wrImage.Height), 0, 0, wrImage.Width, wrImage.Height, GraphicsUnit.Pixel, imgAttributes); gWater.Dispose(); } wrImage.Dispose(); } } } //保存 initImage.Save(savePath, System.Drawing.Imaging.ImageFormat.Jpeg); } else { //缩略图宽、高计算 double newWidth initImage.Width; double newHeight initImage.Height; //宽大于高或宽等于高横图或正方 if (initImage.Width initImage.Height || initImage.Width initImage.Height) { //如果宽大于模版 if (initImage.Width targetWidth) { //宽按模版高按比例缩放 newWidth targetWidth; newHeight initImage.Height * (targetWidth / initImage.Width); } } //高大于宽竖图 else { //如果高大于模版 if (initImage.Height targetHeight) { //高按模版宽按比例缩放 newHeight targetHeight; newWidth initImage.Width * (targetHeight / initImage.Height); } } //生成新图 //新建一个bmp图片 System.Drawing.Image newImage new System.Drawing.Bitmap((int)newWidth, (int)newHeight); //新建一个画板 System.Drawing.Graphics newG System.Drawing.Graphics.FromImage(newImage); //设置质量 newG.InterpolationMode System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; newG.SmoothingMode System.Drawing.Drawing2D.SmoothingMode.HighQuality; //置背景色 newG.Clear(Color.White); //画图 newG.DrawImage(initImage, new System.Drawing.Rectangle(0, 0, newImage.Width, newImage.Height), new System.Drawing.Rectangle(0, 0, initImage.Width, initImage.Height), System.Drawing.GraphicsUnit.Pixel); //文字水印 if (watermarkText ! ) { using (System.Drawing.Graphics gWater System.Drawing.Graphics.FromImage(newImage)) { System.Drawing.Font fontWater new Font(宋体, 10); System.Drawing.Brush brushWater new SolidBrush(Color.White); gWater.DrawString(watermarkText, fontWater, brushWater, 10, 10); gWater.Dispose(); } } //透明图片水印 if (watermarkImage ! ) { if (File.Exists(watermarkImage)) { //获取水印图片 using (System.Drawing.Image wrImage System.Drawing.Image.FromFile(watermarkImage)) { //水印绘制条件原始图片宽高均大于或等于水印图片 if (newImage.Width wrImage.Width newImage.Height wrImage.Height) { Graphics gWater Graphics.FromImage(newImage); //透明属性 ImageAttributes imgAttributes new ImageAttributes(); ColorMap colorMap new ColorMap(); colorMap.OldColor Color.FromArgb(255, 0, 255, 0); colorMap.NewColor Color.FromArgb(0, 0, 0, 0); ColorMap[] remapTable { colorMap }; imgAttributes.SetRemapTable(remapTable, ColorAdjustType.Bitmap); float[][] colorMatrixElements { new float[] {1.0f, 0.0f, 0.0f, 0.0f, 0.0f}, new float[] {0.0f, 1.0f, 0.0f, 0.0f, 0.0f}, new float[] {0.0f, 0.0f, 1.0f, 0.0f, 0.0f}, new float[] {0.0f, 0.0f, 0.0f, 0.5f, 0.0f},//透明度:0.5 new float[] {0.0f, 0.0f, 0.0f, 0.0f, 1.0f} }; ColorMatrix wmColorMatrix new ColorMatrix(colorMatrixElements); imgAttributes.SetColorMatrix(wmColorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap); gWater.DrawImage(wrImage, new Rectangle(newImage.Width - wrImage.Width, newImage.Height - wrImage.Height, wrImage.Width, wrImage.Height), 0, 0, wrImage.Width, wrImage.Height, GraphicsUnit.Pixel, imgAttributes); gWater.Dispose(); } wrImage.Dispose(); } } } //保存缩略图 newImage.Save(savePath, System.Drawing.Imaging.ImageFormat.Jpeg); //释放资源 newG.Dispose(); newImage.Dispose(); initImage.Dispose(); } } #endregion #region 其它 /// summary /// 判断文件类型是否为WEB格式图片 /// (注JPG,GIF,BMP,PNG) /// /summary /// param namecontentTypeHttpPostedFile.ContentType/param /// returns/returns public static bool IsWebImage(string contentType) { if (contentType image/pjpeg || contentType image/jpeg || contentType image/gif || contentType image/bmp || contentType image/png) { return true; } else { return false; } } #endregion }//end class }
http://www.zqtcl.cn/news/242101/

相关文章:

  • 淄博网站制作服务推广做网站服务器配置
  • ppt做的好的有哪些网站有哪些广州品牌型网站建设
  • 怎么学做一件完整衣服网站网站 相对路径
  • 十大wordpress主题江门seo排名优化
  • 石家庄网站搭建定制在百度上如何上传自己的网站
  • 南宁建设厅官方网站福州中小企业网站制作
  • 模板网站建设平台昆山专业网站建设公司哪家好
  • 百度指数的数值代表什么网站建设优化的作用
  • 河南便宜网站建设价格wordpress页面图片插件
  • 网站生成wordwordpress汽车主题公园
  • 网络营销成功的案例及其原因湖南网站seo地址
  • 潍坊企业网站模板绩效考核表 网站建设
  • 建设企业网站公做深度游网站 知乎
  • 可以做h5的网站韶关网站建设制作
  • 企业网站建设的基本要素有哪些通知模板范文
  • 网站建设计划书范本住房和城乡建设部网站事故快报
  • 西安网站建设公司排家居用品东莞网站建设
  • 网站建设评比文章上海手机网站建设价格
  • 微信手机网站三合一建筑工程网络计划方法
  • 网站上文章分享的代码怎么做的建在线教育网站需要多少钱
  • 如何自己弄网站怎么用手机做网站服务器
  • 如果我的网站被百度收录了_以后如何做更新争取更多收录有做不锈钢工程的网站
  • 适合做公司网站的cms东莞阳光网站投诉平台
  • 建设一个网站的意义印刷东莞网站建设技术支持
  • 80端口被封怎么做网站个人网站做支付接口
  • 如何区分网站开发语言建设网站地图素材
  • 建网站的流程怎么投稿各大媒体网站
  • 品牌推广的步骤和技巧专业seo培训学校
  • 新网站上线怎么做seo网站建设语言什么语言
  • 山东省住房城乡和建设厅网站黄页网站推广下载免费