Graphics.DrawString() 生成的图片质量比原图片差很多

foxwfb 2009-01-30 02:18:35
System.Drawing.Bitmap addBitmap = new Bitmap(StringFileName);

Graphics G = Graphics.FromImage(addBitmap);

G.DrawImage(addBitmap, 0, 0, addBitmap.Width, addBitmap.Height);


G.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;

G.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

G.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;

G.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
G.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;



G.DrawString(StringSYName, richTextBox1.Font, new SolidBrush(richTextBox1.ForeColor), Left, Top);

G.Dispose();


addBitmap.Save("文件名")

源文件的大小有110多KB,很清楚的一张图片,加文字水印后,保存后的新文件,只有30K的样子,有点模糊,文件质量大不如以前,
请问有什么办法让加水印后的图片和源图片一样清晰,效果一样的不错,图片文件大小也和原来差不多!
...全文
681 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
弦率 2012-03-07
  • 打赏
  • 举报
回复
说的好,我试试, 学习了
foxwfb 2009-02-08
  • 打赏
  • 举报
回复
多谢7楼
xiaochao1987 2009-02-06
  • 打赏
  • 举报
回复
同样问题 绑定!
CraxyMouse 2009-02-05
  • 打赏
  • 举报
回复
之前定义的三个变量
忘了不好意思
private Encoder myEncoder;
private EncoderParameter myEncoderParameter;
private EncoderParameters myEncoderParameters;
CraxyMouse 2009-02-05
  • 打赏
  • 举报
回复
保存的时候要设计图片质量的

Bitmap bitmap = new Bitmap(width, height);
//修改图片保存质量
ImageCodecInfo myImageCodecInfo = GetEncoderInfo("image/jpeg");
myEncoder = Encoder.Quality;
myEncoderParameters = new EncoderParameters(1);
//图片质量等级
myEncoderParameter = new EncoderParameter(myEncoder, 100L);
myEncoderParameters.Param[0] = myEncoderParameter;
//建立做图纸
Graphics g = Graphics.FromImage(bitmap);
g.Clear(Color.White);
//做图质量
g.SmoothingMode = SmoothingMode.AntiAlias;

//图像输出
bitmap.Save(Response.OutputStream, myImageCodecInfo, myEncoderParameters);
foxwfb 2009-02-05
  • 打赏
  • 举报
回复
之前没加楼上这些,更加模糊......
zgke 2009-02-05
  • 打赏
  • 举报
回复
把下面的都删除了 看看
G.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;

G.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

G.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;

G.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
G.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
tommir3 2009-01-30
  • 打赏
  • 举报
回复
我也用过Graphics画过图片,也写上去的字,但不是水印,没出现模糊现象....
当然,我这断代码是写在时间事件里的,希望对你有所帮助

Image curImage;//存放当前图片
private Graphics curGra;//从资源文件中画出图片的画图

curImage = new Bitmap(this.screenWidth, this.screenHeight);
curGra = Graphics.FromImage(curImage);
curGra.DrawImage(GetImage("_" + i.ToString()), 0, 0, this.screenWidth, this.screenHeight);
this.CreateGraphics().DrawImage(curImage, new Point(0, 0));
this.CreateGraphics().Dispose();

this.CreateGraphics().DrawString("这是我的图片!", new Font("宋体", 50, FontStyle.Bold), Brushes.Blue, 10, 10);

foxwfb 2009-01-30
  • 打赏
  • 举报
回复
JPG和Bmp都是一样的效果,都这如我描述的那样子。
conan19771130 2009-01-30
  • 打赏
  • 举报
回复
up
宝_爸 2009-01-30
  • 打赏
  • 举报
回复
楼主是jpg还是bmp?

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧