/// <summary> /// 生成缩略图,默认100*100 /// </summary> /// <param name="sourcePath">源路径</param> /// <param name="toPath">目标路径</param> /// <returns></returns> public static void ImageThumbs(string sourcePath, string toPath) { string[] strArr = EKFile.AllFiles(sourcePath); string fileName = ""; for (int i = 0; i < strArr.Length; i++) { if (strArr[i].Contains("Thumbs.db")) { continue; } if (!MS_ConfigBLL.UploadImageType.ToLower().Contains(strArr[i].Split('.')[1])) { continue; } fileName = strArr[i].Remove(0, strArr[i].ToLower().LastIndexOf("\\")); if (!EKFile.ExistFile(toPath + "\\" + fileName)) { if (!EKFile.ExistsDirectory(toPath)) { EKFile.CreateDirectory(toPath); } ImageUpLoad(strArr[i], toPath + "\\" + fileName, 100, 100); } } }
public void Save(EKFile file) { var files = Get(); if (file.IsNew()) { var maxId = files.Count == 0 ? 1 : files.Max(i => i.Id) + 1; file.Id = maxId; file.DateCreated = DateTime.Now; files.Add(file); } else { var fileToEdit = files.Where(i => i.Id == file.Id).Single(); fileToEdit.Title = file.Title; fileToEdit.Description = file.Description; fileToEdit.FileName = file.FileName; fileToEdit.DateModified = DateTime.Now; } Persist(files); }
/// <summary> /// 保存图片 /// </summary> /// <param name="imagepath">保存路径</param> /// <param name="bitmap">图片内容</param> /// <param name="xObject">图片格式</param> private static void ImageSave(string imagepath, System.Drawing.Image bitmap, System.Drawing.Imaging.ImageFormat xObject) { // 以下代码为保存图片时,设置压缩质量 EncoderParameters encoderParams = new EncoderParameters(); long[] quality = new long[1]; quality[0] = 255; EncoderParameter encoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality); encoderParams.Param[0] = encoderParam; //获得包含有关内置图像编码解码器的信息的ImageCodecInfo 对象. ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders(); ImageCodecInfo jpegICI = null; for (int x = 0; x < arrayICI.Length; x++) { if (arrayICI[x].FormatDescription.ToLower().Equals("jpeg")) { jpegICI = arrayICI[x]; //设置JPEG编码 break; } } if (jpegICI != null) { //System.Web.HttpContext.Current.Response.Write("a"); EKFile.DeleteFile(imagepath); EKFileUpload.doCreatrDir(imagepath); bitmap.Save(imagepath, jpegICI, encoderParams); } else { //System.Web.HttpContext.Current.Response.Write("b"); EKFile.DeleteFile(imagepath); EKFileUpload.doCreatrDir(imagepath); bitmap.Save(imagepath, xObject); } }
/// <summary> /// 保存远程图片,替换图片链接为本地,返回替换后内容 /// </summary> /// <param name="html">html代码</param> /// <param name="dt">生成时间</param> /// <param name="reg">图片正则表达式</param> /// <param name="webRoot">补全图片访问域名。 例:http://www.abc.com</param> /// <returns></returns> public static string SaveImage(string html, DateTime dt, string reg, string webRoot) { System.Net.WebClient WC = new System.Net.WebClient(); //是否保存远程图片 if (1 == 1) { //<img.+?src=\"(?<url>.+?)\".+?> string reg_img = "<img.+?src=\"(?<url>.+?)\".+?>"; if (reg != "") { reg_img = reg; } MatchCollection mc = Regex.Matches(html, reg_img, RegexOptions.IgnoreCase); string imgUrl = ""; string imgfix = "jpg"; //格式 盘:/UploadPath/webfile/201001/01/ string savePath = "/" + MS_ConfigBLL.UploadPath + "/" + "webfile/" + dt.ToString("yyyyMM") + "/" + dt.ToString("dd") + "/"; //格式 时分秒毫秒 string imgName = ""; string imgNewUrl = ""; foreach (Match math in mc) { imgName = DateTime.Now.ToString("HHmmssfff"); imgUrl = math.Groups["url"].Value; if (imgUrl.StartsWith("http://") || imgUrl.StartsWith("https://") || imgUrl.StartsWith("www.")) { Uri uri = new Uri(imgUrl); if (EKFile.ExistFile(EKFile.GetMapPath(uri.AbsolutePath))) { //本地存在,下次循环 continue; } //后缀 string[] tempAry = imgUrl.Split('.'); if (tempAry.Length > 0) { imgfix = tempAry[tempAry.Length - 1]; } imgNewUrl = savePath + imgName + "." + imgfix; if (!EKFile.ExistsDirectory(EKFile.GetMapPath("/") + savePath)) { EKFile.CreateDirectory(EKFile.GetMapPath("/") + savePath); } try { WC.DownloadFile(imgUrl, EKFile.GetMapPath("/") + imgNewUrl); WC.Dispose(); //保存成功,则替换内容中图片链接 html = html.Replace(imgUrl, webRoot + imgNewUrl); } catch (Exception err) { new MS_LogBLL().AddLogAdmin(MS_LogBLL.LogLevel.ERROR, "保存远程图片错误" + err.Message); return(html); } } } } return(html); }
/// <summary> /// 批量生成目录下所有图片缩略图 /// </summary> /// <param name="spath">全文件路径</param> /// <param name="isChild">子目录是否生成</param> public static void CreateSImg(string spath, bool isChild) { DirectoryInfo[] ChildDirectory; //子目录集 FileInfo[] NewFileInfo; //当前所有文件 string path = spath; DirectoryInfo FatherDirectory = new DirectoryInfo(path); //当前目录 ChildDirectory = FatherDirectory.GetDirectories("*.*"); //得到子目录集 //根目录文件 NewFileInfo = FatherDirectory.GetFiles(); foreach (FileInfo DirFile in NewFileInfo)//获取此级目录下的所有文件 { if (!DirFile.FullName.ToLower().EndsWith(".jpg") && !DirFile.FullName.ToLower().EndsWith(".png") && !DirFile.FullName.ToLower().EndsWith(".gif") && !DirFile.FullName.ToLower().EndsWith(".ico") && !DirFile.FullName.ToLower().EndsWith(".bmp")) { //不是 图片 返回。 continue; } string sfile = ""; //小 string mfile = ""; //中 sfile = DirFile.FullName.ToLower().Replace(EKFile.GetMapPath("/" + MS_ConfigBLL.UploadPath).ToLower(), EKFile.GetMapPath("/") + "/" + MS_ConfigBLL.UploadPath_X + "/" + MS_ConfigBLL.UploadPath); mfile = DirFile.FullName.ToLower().Replace(EKFile.GetMapPath("/" + MS_ConfigBLL.UploadPath).ToLower(), EKFile.GetMapPath("/") + "/" + MS_ConfigBLL.UploadPath_Z + "/" + MS_ConfigBLL.UploadPath); EKFile.CreateDirectory(mfile.Remove(mfile.LastIndexOf("\\"))); EKFile.CreateDirectory(sfile.Remove(sfile.LastIndexOf("\\"))); try { if (DirFile.FullName.ToLower().EndsWith(".gif") || DirFile.FullName.ToLower().EndsWith(".ico")) { //gif会动,不处理。ico 不处理 EKFile.CopyFile(DirFile.FullName, sfile); EKFile.CopyFile(DirFile.FullName, mfile); } else { if (!File.Exists(sfile)) { EKFileUpload.ImageUpLoad(DirFile.FullName, sfile, 150, 150); } if (!File.Exists(mfile)) { EKFileUpload.ImageUpLoad(DirFile.FullName, mfile, 500, 500); } } } catch { //m_new.NewsTitle = DirFile.FullName + "-----" + zfile; //b_new.Add(m_new); continue; } } //子目录是否生成 if (isChild) { foreach (DirectoryInfo dirInfo in ChildDirectory)//目录 { if (dirInfo.Attributes.ToString().Contains("Hidden")) { continue; } CreateSImg(dirInfo.FullName, isChild); } } }
/// <summary> /// Word转HTMl /// </summary> /// <param name="path">word文件路径 带盘符</param> /// <returns></returns> public static string WordToHtml(string wordPath) { Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application(); Type wordType = word.GetType(); Microsoft.Office.Interop.Word.Documents docs = word.Documents; Object oMissing = System.Reflection.Missing.Value; // 打开文件 Type docsType = docs.GetType(); //应当先把文件上传至服务器然后再解析文件为html string filePath = wordPath; Microsoft.Office.Interop.Word.Document doc = (Microsoft.Office.Interop.Word.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { filePath, true, true }); // 转换格式,另存为html Type docType = doc.GetType(); //被转换的html文档保存的位置 string saveFileName = ""; string ext = EKFileUpload.getExtend(wordPath).ToLower(); if (ext == "doc") { saveFileName = wordPath.Replace(".doc", ""); } else if (ext == "docx") { saveFileName = wordPath.Replace(".docx", ""); } else { } //另存为html页面 docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { saveFileName, Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatFilteredHTML }); // 退出 Word wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null); //doc.Close(ref oMissing, ref oMissing, ref oMissing); try { docs.Close(ref oMissing, ref oMissing, ref oMissing); word.Quit(ref oMissing, ref oMissing, ref oMissing); } catch (Exception ex) { new MS_LogBLL().AddLogAdmin(MS_LogBLL.LogLevel.ERROR, "word转换失败" + ex.Message); } GC.Collect(); //读取html 页面 string html = ""; //特别处理.有"."号的的文件名.直接读. 不用加.htm if (saveFileName.Contains(".")) { html = EKFile.ReadFile(saveFileName); } else { html = EKFile.ReadFile(saveFileName + ".htm"); } //补全图片地址 html = EKHtml.ImageWebRoot(html, "http://" + System.Web.HttpContext.Current.Request.Url.Authority + "/files/temp/", "<img[\\s\\S]+?src=\"(?<url>.+?)\">"); //保存页面图片 html = EKHtml.SaveImage(html, DateTime.Now, "<img[\\s\\S]+?src=\"(?<url>.+?)\">"); //删除临时文件.也可保留 if (saveFileName.Contains(".")) { EKFile.DeleteFile(saveFileName); } else { EKFile.DeleteFile(saveFileName + ".htm"); } //删除目录 if (EKFile.ExistsDirectory(saveFileName + ".files")) { EKFile.DeleteDirectoryAnd(saveFileName + ".files"); EKFile.DeleteDirectory(saveFileName + ".files"); } EKFile.DeleteFile(wordPath); return(html); }