随笔 - 113  文章 - 0  评论 - 218  阅读 - 73万

FCK在线编辑器上传图片加入水印功能

在线编辑器Fckeditor优点很多,如:适应多种开发语言环境,功能强大免费开源,能根据自己要求扩展功能。

大家可以到官方网站下载最新源代码。现在最新官方消息FCKEditor已经改名CKEditor了。最新版本是CKEditor.NET 3.5.3

本文要实现功能是:利用编辑器在图片上传时,加入水印功能。

如何在自己的网站中架设FCKeditor编辑器?我就不说了,本文默认你已经架设过并且熟悉FCKeditor内部结构。
在下载FCKeditor编辑器的同时,如果是使用.net版本,还必须下载一个源代码包,在里面有一些功能类,和编译出来的DLL文件,存放在BIN文件中,我们所需要做的就是修改源代码,重新编译源代码,生成新的DLL,在自己的网站中替换就可以了。
我使用的是(源代码版本号是FCKeditor.Net_2.5,编辑器文件版本号为FCKeditor_2.6.3)
用VS2008打开代码包根目录下的FredCK.FCKeditorV2.csproj文件,待文件树展开后,找到FileBrowser文件夹下的FileWorkerBase.cs文件,对其进行修改。
我们需要的是修改FileWorkerBase类中的FileUpload方法函数。
在看代码之前,先做好准备工作。

在自己的网站中建立了watermark.config文件,用于存放网站的一些配置信息,如水印的类型(文字型,图片型),是否需要加水印,文字型水印的文字内容等等和本文无关的重要配置信息。

所以在如下代码中,有一段是用来读取这些配置信息的。
在FileUpload方法中找到oFile.SaveAs( sFilePath );语句。在其后加入

 

复制代码
try
{
     DataSet configds 
= new DataSet();
     configds.ReadXml(Server.MapPath(
"~/config/watermark.config"));
     DataTable configdt 
= configds.Tables[0];
     
if (configdt.Rows[0]["Watermarkstatus"].ToString() == "1")
     {
         Image img 
= Image.FromFile(sFilePath);
         
if (configdt.Rows[0]["Watermarktype"].ToString() == "0")
         {
             Graphics g 
= Graphics.FromImage(img);
             g.DrawImage(img, 
00, img.Width, img.Height);
             Font f 
= new Font("华文行楷"40);
             Brush b 
= new SolidBrush(Color.White);
             
string addText = configdt.Rows[0]["Watermarktext"].ToString();
             g.DrawString(addText, f, b, img.Width 
- 174, img.Height - 40);
             g.Dispose();
         }
         
if (configdt.Rows[0]["Watermarktype"].ToString() == "1")
         {
             System.Drawing.Image copyImage 
= System.Drawing.Image.FromFile(Server.MapPath("~/watermark/watermark.gif"));
             Graphics g 
= Graphics.FromImage(img);
             g.DrawImage(copyImage, 
new Rectangle(img.Width - copyImage.Width, img.Height - copyImage.Height, copyImage.Width, copyImage.Height), 00, copyImage.Width, copyImage.Height, GraphicsUnit.Pixel);
             g.Dispose();
         }
         sFileName 
= System.IO.Path.GetFileNameWithoutExtension(oFile.FileName);
           
string newPath = sFileName+"_"+DateTime.Now.ToString("yyMMddhhmmss"+ "." + sExtension;
           newPath 
= System.IO.Path.Combine(sServerDir, newPath);
           sFileName 
= newPath;
           img.Save(newPath);
           img.Dispose();
          
if (File.Exists(sFilePath))
          {
               File.Delete(sFilePath);
          }
       }
     }
catch
{
      
this.SendFileUploadResponse(808, isQuickUpload);
}

 

 

 

请注意,一定要在自己的站点根目录下新建config文件夹,将watermark.config存放其中,

 watermark.config中必须出现的几个字段如下:
  <Watermarkstatus>0</Watermarkstatus><!--0:默认加;1:不加-->
  <Watermarktype>1</Watermarktype><!--0:文字型水印;1:图片型水印-->
  <Watermarktext>ABCD</Watermarktext>
  <Watermarkpic>watermark.gif</Watermarkpic>

 

 

复制代码

整个源码工程包下载如下:

/Files/cgli/FredCK.FCKeditorV2.rar

posted on   陈国利  阅读(2681)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
< 2011年4月 >
27 28 29 30 31 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
1 2 3 4 5 6 7

点击右上角即可分享
微信分享提示