【问题标题】:Graphics object making blank images制作空白图像的图形对象
【发布时间】:2013-09-08 06:36:30
【问题描述】:

我正在尝试绘制图像以通过 .net 4.5 中的 Web 服务作为 base 64 字符串返回。我可以加载自定义背景,但是我需要在该背景上绘制文本。问题是,一旦我从图像->图形对象->图像,我最终得到一个空白的 png。如果我通过服务返回原始 srcImage(空白模板),一切正常,但我的标签是空白的,所以我知道我的图形对象一定有问题。

我的代码是:

    var labelSize = new Size(400, 459);
    using (var srcImage = Image.FromFile(HostingEnvironment.MapPath("~/images/labels/" + labelImageFilename))) {
        PixelFormat format = srcImage.PixelFormat;
        using (Bitmap newImage = new Bitmap(labelSize.Width, labelSize.Height, format))
        using (Graphics g = Graphics.FromImage(newImage)) {
            g.SmoothingMode = SmoothingMode.AntiAlias;
            g.InterpolationMode = InterpolationMode.HighQualityBicubic;
            g.PixelOffsetMode = PixelOffsetMode.HighQuality;
            Rectangle srcRect = new Rectangle(0, 0, srcImage.Width, srcImage.Height);
            Rectangle destRect = new Rectangle(0,0, labelSize.Width, labelSize.Height);
            g.DrawImage(srcImage, destRect, srcRect, GraphicsUnit.Pixel);
            // draw other shapes etc

            g.FillRegion(Brushes.Blue,new Region(new Rectangle(0,0,200,200)));
            g.Clear(Color.Red);
            g.Flush();
            return new Bitmap(srcImage, labelSize.Width, labelSize.Height); // this works fine, but my image is just the standard background I'm using
            return new Bitmap(labelSize.Width, labelSize.Height, g); //  returns a blank image
        }
    }

没有绘制任何东西,模板背景 (srcImage) 和红色或蓝色矩形都没有。

【问题讨论】:

  • 我认为您的图形对象在 newImage 上绘图,但您返回的是 srcImage。如果你想返回你的绘图结果,我认为你需要返回 newImage ?我不是 100% 确定,所以希望这会有所帮助。
  • 在左上一行显示对 Web 服务的调用正在运行,它是实际返回的第二行,也是最后一行。
  • 尝试类似:return new Bitmap(newImage, labelSize.Width, labelSize.Height);
  • 您先生,是个学者和绅士。如果您将其发布为答案,我将很乐意接受。
  • return new Bitmap(labelSize.Width, labelSize.Height, g) 不起作用。根据 MSDN,此构造函数只会使用图形分辨率初始化位图,但不会将其内容保存到位图。您应该按照其他人的建议返回 newImage 对象。

标签: c# asp.net web-services image-processing gdi+


【解决方案1】:

我认为您的图形对象似乎是在 newImage 上绘制,但您正在返回 srcImage。如果你想返回你的绘图结果,我认为你需要返回 newImage。

尝试类似:

return new Bitmap(newImage, labelSize.Width, labelSize.Height);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多