现在的位置: 首页 > 综合 > 正文

Asp.net 中将文字写入图片中

2014年02月07日 ⁄ 综合 ⁄ 共 2948字 ⁄ 字号 评论关闭
 

    /// <summary>
        
/// 功能:将文字写入图片
        
/// 日期:2006-11-20
        
/// 作者:杨义贤
        
/// </summary>
        
/// <param name="strfileName">文件名字</param>
        
/// <param name="strtext">需要写入的文字</param>

        private void TextToImage(string strfileName,string strtext)
        
{
            
if(!File.Exists(MapPath(strfileName)))
            
{
                
throw new FileNotFoundException("文件不存在!");
            }

           
            
if( strtext == string.Empty )
            
{
                
return;
            }

            
//还需要判断文件类型是否为图像类型
            System.Drawing.Image image = System.Drawing.Image.FromFile(MapPath(strfileName));
            Bitmap bitmap 
= new Bitmap(image,image.Width,image.Height);
            Graphics grap 
= Graphics.FromImage(bitmap);
            
float fontSize = 24.0f;             //字体大小
            float textWidth = strtext.Length*fontSize;  //文本的长度
            
//下面定义一个矩形区域,以后在这个矩形里画上白底黑字
            float rectX = 0;       
            
float rectY = 0;
            
float rectWidth = strtext.Length*(fontSize+12);
            
float rectHeight = fontSize+8;
            
string strFont;//定义字体类型
            
//声明矩形域
            RectangleF textArea = new RectangleF(rectX,rectY,rectWidth,rectHeight);
            strFont 
= ddlfont.SelectedItem.Text.ToString().Trim();
            Font font 
= new Font(strFont,fontSize);   //定义字体
            Brush whiteBrush = new SolidBrush(Color.White);   //白笔刷,画文字用
            Brush blackBrush = new SolidBrush(Color.Transparent);   //黑笔刷,画背景用

            grap.FillRectangle(blackBrush,rectX,rectY,rectWidth,rectHeight);           

            grap.DrawString(strtext,font,whiteBrush,textArea);
            MemoryStream ms 
= new MemoryStream();
            
//保存为Jpg类型
            bitmap.Save(ms,ImageFormat.Jpeg);

            
//输出处理后的图像.//在这里可以将生成后的图片放大Oracle数据库Power中
            
            Response.Clear();
            Response.ContentType 
= "image/jpeg";
            Response.BinaryWrite(ms.ToArray());
            grap.Dispose();
            bitmap.Dispose();
            image.Dispose();
        }

事件:

 

private void btnWrite_Click(object sender, System.EventArgs e)
        
{
            HttpPostedFile httpPostFile;    
//客户端上载文件对象
            httpPostFile = DocUpload.PostedFile;
            
string strTemp;
            
string strFileName;//完成文件名
            strTemp = httpPostFile.FileName.ToString().Trim();
            strFileName 
= GetRealFileName(strTemp);
            
string strImg = "images/";
            TextToImage(strImg 
+strFileName,txtDocName.Text.ToString());

        }
/// <summary>
        
///  功能:获取文件名
        
///  日期:2006-11-20
        
///  作者:杨义贤
        
/// </summary>
        
/// <param name="strPathName">文件路径</param>
        
/// <returns></returns>

        public string GetRealFileName(string strPathName)
        
{
            
string [] strFileName = strPathName.Split('/');
            
int iPos = strFileName.GetUpperBound(0);
            
return strFileName[iPos];
        }

抱歉!评论已关闭.