首页 新闻 会员 周边

C# Graphics.DrawImage 的问题

0
[已解决问题] 解决于 2018-10-18 11:10

请教为什么图片会粘不过去呢?以下是一些关键的代码

Bitmap bitmap = null; //按截图区域生成Bitmap
Image thumbImg = null; //被截图
Image test = null;
Graphics gps = null; //存绘图对象

                bitmap = new System.Drawing.Bitmap(Convert.ToInt32(maxVal), Convert.ToInt32(maxVal));
                thumbImg = System.Drawing.Image.FromFile(System.Web.HttpContext.Current.Server.MapPath(imgUrl));
                System.Drawing.Rectangle rl = new System.Drawing.Rectangle(Convert.ToInt32(pointX), Convert.ToInt32(pointY), Convert.ToInt32(maxVal), Convert.ToInt32(maxVal));   //得到截图矩形

                gps = System.Drawing.Graphics.FromImage(bitmap);

                gps.DrawImage(thumbImg, 0, 0, rl, System.Drawing.GraphicsUnit.Pixel);
C#
只是一个路人的主页 只是一个路人 | 初学一级 | 园豆:139
提问于:2018-10-15 19:17
< >
分享
最佳答案
0

需要加上 gps.DrawImage(thumbImg, 0, 0, width, height);

Bitmap bitmap = null; //按截图区域生成Bitmap
Image thumbImg = null; //被截图
Image test = null;
Graphics gps = null; //存绘图对象

bitmap = new System.Drawing.Bitmap(Convert.ToInt32(maxVal), Convert.ToInt32(maxVal));
thumbImg = System.Drawing.Image.FromFile(System.Web.HttpContext.Current.Server.MapPath(imgUrl));
System.Drawing.Rectangle rl = new System.Drawing.Rectangle(Convert.ToInt32(pointX), Convert.ToInt32(pointY), Convert.ToInt32(maxVal), Convert.ToInt32(maxVal));   //得到截图矩形

gps = System.Drawing.Graphics.FromImage(bitmap);
gps.DrawImage(thumbImg, 0, 0, width, height);
gps.DrawImage(thumbImg, 0, 0, rl, System.Drawing.GraphicsUnit.Pixel);
奖励园豆:5
dudu | 高人七级 |园豆:30979 | 2018-10-15 21:30

我加上您说的那个之后就没有了截图的功能效果,在 Bitmap 那边就规定好了这个画布的大小了,后面还需要再规定大小吗?

只是一个路人 | 园豆:139 (初学一级) | 2018-10-16 10:17

@Yang小杨: 我们在项目中实际使用的代码

using (var originImage = Image.FromFile(imagePhysicalPath))
{
    using (var newImage = new Bitmap(width, height))
    {
        using (var graphic = Graphics.FromImage(newImage))
        {
            graphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
            graphic.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            graphic.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
            graphic.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
            graphic.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy;
            graphic.DrawImage(originImage, 0, 0, w, h);
            graphic.DrawImage(originImage, new Rectangle(0, 0, width, height), x, y, w, h, GraphicsUnit.Pixel);
        }
    }
}
dudu | 园豆:30979 (高人七级) | 2018-10-16 13:34

@dudu: 请问这个是压缩图片还是截图?类似QQ头像的那种

只是一个路人 | 园豆:139 (初学一级) | 2018-10-16 14:27

@Yang小杨: 截取图片作为头像

dudu | 园豆:30979 (高人七级) | 2018-10-16 14:53

@dudu: 谢谢啦

只是一个路人 | 园豆:139 (初学一级) | 2018-10-17 11:07

@dudu: 请问一下,用户上传的头像存储的形式是什么?在服务器上建一个文件夹存放吗?

只是一个路人 | 园豆:139 (初学一级) | 2018-10-18 11:07

@Yang小杨: 我们是存储到阿里云OSS与腾讯云COS

dudu | 园豆:30979 (高人七级) | 2018-10-18 11:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册