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 这个网站上的绘制的图片就很好看,图像 和 文字很清楚!!请高手指点!!
{
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 这个网站上的绘制的图片就很好看,图像 和 文字很清楚!!请高手指点!!
解决方案 »
- C#关于多条件查询的问题,后面总是多出一个and,怎么去掉
- winform 中如何动态获取控件
- 请教C#下载数据到客户端的一个问题
- 中止当前运行事件
- 请指教c#如何实现sqlserver数据写入listbos
- System.Data.SqlClient.SqlDataReader中的数据到底是如何实现的
- 关于Sql server express数据库改名
- 【求助】invoke引发的死机问题
- 关于C#数据库编程的若干问题
- 关于仓管系统的报价(可能外放)
- Visual Stdio Express 2005与Visual Stdio 2005有什么区别?用XNA来开发游戏时,后者能否代替前者?
- 统计一个字符窜里面的各个字母出现的次数(个数)
用不压缩的图片格式来做添加文字的操作.完成后再转成jpg格式或者gif之类的格式.
因为我发现用画图保存图片成jpg后都有很明显的毛边效果,有损压缩的缘故吧.
参考
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
你可以搜搜
好先得用system.draw等几个命名空间