【问题标题】:Image sizing issue in bitmap位图中的图像大小问题
【发布时间】:2013-05-29 13:51:33
【问题描述】:

我正在使用下面的代码来创建位图。正在创建图像,但没有指定大小。代码有问题吗?

public class ProcessImage : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        var bmpOut = new Bitmap(100, 100);
        var request = (HttpWebRequest)WebRequest.Create("http://media.zenfs.com/en_us/Sports/ap/201305061639599673916-p2.jpeg");
        request.AllowWriteStreamBuffering = true;
        var response = (HttpWebResponse) request.GetResponse();
        var myStream = response.GetResponseStream();
        var b = new Bitmap(myStream);
        var g = Graphics.FromImage(bmpOut);
        g.InterpolationMode = InterpolationMode.High;
        g.DrawImage(b,0,0,50, 50);
        context.Response.ContentType = "image/png";
        var stream = new MemoryStream();
        b.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
        b.Dispose();
        stream.WriteTo(HttpContext.Current.Response.OutputStream);
        //context.Response.Write("Hello World");
    }

【问题讨论】:

  • 你期望什么尺寸,你得到什么尺寸?
  • 我希望尺寸为50x50,但我得到的是原始图像尺寸

标签: c#


【解决方案1】:
private Bitmap ResizeImage(Image image, int width, int height)
{
    Bitmap result = new Bitmap(width, height);
    result.SetResolution(image.HorizontalResolution, image.VerticalResolution);
    using (Graphics graphics = Graphics.FromImage(result))
    {
        graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
        graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
        graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

        graphics.DrawImage(image, 0, 0, result.Width, result.Height);
    }
    return result;
}

【讨论】:

  • +1,感谢您的代码,但我仍然得到相同的大小
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-20
  • 2015-06-30
相关资源
最近更新 更多