• c# 画图中bitmap类处理出图片时,存储的注意事项


    今天查找以前写的画图程序,想完善一下,发现

    图片添加文字水印时候会有些模糊,特别是小字体的时候特别模糊,

    经过一番调适,终于发现了问题

    帖上代码,警示自己

       System.Drawing.Image image = System.Drawing.Image.FromFile(Server.MapPath("b1.jpg"));
            Bitmap bitWaterMark = new Bitmap(image.Width, image.Height);
            Graphics g = Graphics.FromImage(bitWaterMark);

            g.DrawImage(image, 0, 0, image.Width, image.Height);

            Font f = new Font("verdana", 14);
            Brush c = new SolidBrush(Color.FromName("red"));
            string addtext = "测试字体啊";
            g.DrawString(addtext, f, c, 10, 1);
            g.Dispose();
            image.Dispose();
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            bitWaterMark.Save(ms, ImageFormat.Bmp);

       //bitWaterMark.Save(ms, ImageFormat.Jpeg);
            //重新生成Image对象
            System.Drawing.Image img2 = System.Drawing.Image.FromStream(ms);
            //返回新的Image对象
            //bitWaterMark.Save(Server.MapPath("test.jpg"));
            img2.Save(Server.MapPath("test.jpg"));

          //img2.Save(Server.MapPath("test.jpg"), ImageFormat.Jpeg);
            bitWaterMark.Dispose();

    红色字体部分是问题所在,今天才发现这个问题,我想如果用C#画图的朋友也会发现这个问题

    用bitemap类不管是存储到文件,还是存储为数据流来处理 image 对象时候,如果 加上ImageFormat.Jpeg

    都会让图片变模糊,真是很诡异,如果 必须要存储为数据流,那么用ImageFormat.Bmp存储然后保存,生成的图片也会比ImageFormat.Jpeg要清晰的多,但问题终于解决了,生成的图片很清晰了。

  • 相关阅读:
    网页快捷键
    2016年5月3日15:55:23笔记
    【编程的乐趣-用python解算法谜题系列】谜题一 保持一致
    重温离散系列②之良序原理
    重温离散系列①之什么是证明
    浅谈栈和队列
    [leetcode]16-最接近的三数之和
    [leetcode] 4-寻找两个有序数组的中位数
    英语句子的基本结构【转】
    [leetcode] 11-盛最多水的容器
  • 原文地址:https://www.cnblogs.com/yeye518/p/2266525.html
Copyright © 2020-2023  润新知