public void ProcessRequest(HttpContext context)
    {
        string defaultUrl = "~/Images/default.jpg";        string path = context.Request.MapPath("~/Images/"+context.Request.QueryString["id"]+".jpg");
        Image image;
        if (File.Exists(path))  //检查图片是否存在
        {
            image = Image.FromFile(path);   //创建图像
            Graphics g = Graphics.FromImage(image);                              //画板
            string ziti = context.Server.UrlDecode(context.Request.QueryString["f"]);
            Font f = new Font(ziti, 16, FontStyle.Bold, GraphicsUnit.Pixel);
            Brush b = new SolidBrush(Color.Red);
            string name =context.Server.UrlDecode(context.Request.QueryString["n"]);
            g.DrawString(name, f, b, 10, 180); //画
            g.Dispose();
        }
       else
       {
            image = Image.FromFile(context.Server.MapPath(defaultUrl));
       }        context.Response.ContentType = "image/jpeg";
        image.Save(context.Response.OutputStream, ImageFormat.Jpeg);
        image.Dispose();
        context.Response.End();
    }
这是我的在jpg图片上绘制文字的代码
但是绘制出来的文字有很多毛边
文字很不清楚,感觉毛毛的!!
我用下面的方法,对图像先进行编码 在 写字
结果是文字清楚了
图片不清楚了
 public void ProcessRequest(HttpContext context)
    {
       string Path = "~/images/55la/lvsetianye1_108.jpg";
        
        Image img = null;
        if (File.Exists(context.Server.MapPath(Path)))
        {
         
            img = Image.FromFile(context.Server.MapPath(Path));
            Bitmap newBitmap = new Bitmap(img.Width, img.Height, PixelFormat.Format24bppRgb);
           Graphics g = Graphics.FromImage(img); //只能从jpg格式的文件创建此绘图示例       
            //设置新建位图得分辨率
            newBitmap.SetResolution(img.HorizontalResolution, img.VerticalResolution);
            //创建Graphics对象,以对该位图进行操作
     //     Graphics g = Graphics.FromImage(newBitmap);
            //消除锯齿
           g.SmoothingMode = SmoothingMode.HighQuality;
           g.InterpolationMode = InterpolationMode.High;          Font fn = new Font("黑体", 20, FontStyle.Italic);
          g.DrawString(context.Request.QueryString["text"], fn, Brushes.Black, 4, 29);  //绘制字符串  
                    g.Dispose();
            
        }     
        context.Response.ContentType = "image/jpeg";
        ImageCodecInfo myImageCodecInfo;      
        EncoderParameter myEncoderParameter;
        EncoderParameters myEncoderParameters;
                //Get an ImageCodecInfo object that represents the JPEG codec.
        myImageCodecInfo = GetEncoderInfo("image/gif");   
        myEncoderParameters = new EncoderParameters(1);
               //Save the bitmap as a JPEG file with 给定的 quality level
        myEncoderParameter = new EncoderParameter(Encoder.Quality,75);
        myEncoderParameters.Param[0] = myEncoderParameter;
        img.Save(context.Response.OutputStream,myImageCodecInfo,myEncoderParameters);               img.Dispose();
        context.Response.End();    }    private static System.Drawing.Imaging.ImageCodecInfo    GetEncoderInfo(string mineType)
    {        System.Drawing.Imaging.ImageCodecInfo[] myEncoders =
            System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders();        foreach (System.Drawing.Imaging.ImageCodecInfo myEncoder in myEncoders)
            if (myEncoder.MimeType == mineType)
                return myEncoder;
        return null;
    }但是55.la 这个网站上的绘制的图片就很好看,图像 和 文字很清楚!!请高手指点!!

解决方案 »

  1.   

    我没有做过类似的东西,不过提个建议:
    用不压缩的图片格式来做添加文字的操作.完成后再转成jpg格式或者gif之类的格式.
    因为我发现用画图保存图片成jpg后都有很明显的毛边效果,有损压缩的缘故吧.
      

  2.   

    给图片加水印
    参考
    http://blog.csdn.net/sandyxxx/archive/2007/04/10/1559208.aspx
    http://www.cnblogs.com/wdfrog/default.html?page=1
    http://blog.csdn.net/lijian910wolf/archive/2007/03/17/1532158.aspx
      

  3.   

    .NET有处理的方法!!
    你可以搜搜
    好先得用system.draw等几个命名空间
      

  4.   

    需要对文字颜色进行Alpha处理,实现水印效果就可以了