首页 > 解决方案 > DrawImage 中的灰色边框(.NET system.drawing.drawing2D)

问题描述

我正在尝试使用 C# 在位图上创建图像。不知何故,它总是在图像的所有侧面添加灰色边框。该解决方案已发布了许多问题,我几乎尝试了所有问题,但没有一个有效。

我正在使用的代码:

Bitmap appearance = new Bitmap(490, 196, PixelFormat.Format32bppArgb);

using (Graphics graphics = Graphics.FromImage(appearance))
{
    graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
    graphics.SmoothingMode = SmoothingMode.AntiAlias;
    graphics.PixelOffsetMode = PixelOffsetMode.Half;
    graphics.CompositingMode = CompositingMode.SourceCopy;

    using (ImageAttributes wrapMode = new ImageAttributes())
    {
        wrapMode.SetWrapMode(WrapMode.TileFlipXY);
        Rectangle destination = new Rectangle(5, 99, 240, 94);
        graphics.DrawImage(img, destination, 0, 0, img.Width, img.Height, GraphicsUnit.Pixel, wrapMode);
    }
}
   
appearance.Save("F:\\SignatureAppearance.jpeg");

谁能帮我?灰色边框在缩小时不显示,但随着开始放大,边框开始出现。

在此处输入图像描述

任何帮助将不胜感激

我试图创建一个带有白色背景的图像,即使它有右边框和下边框。

Bitmap appearance = new Bitmap(490, 196, PixelFormat.Format32bppArgb);
using (Graphics graphics = Graphics.FromImage(appearance)) { 
// graphics.Clear(Color.White); 
   Rectangle ImageSize = new Rectangle(0, 0, 490, 196); 
   graphics.FillRectangle(Brushes.White, ImageSize); } 
    appearance.Save("F:\\Signature_Appearance.png", ImageFormat.Png);

}

在此处输入图像描述

标签: .netsystem.drawingsystem.drawing.imagingvisual-artifacts

解决方案


问题似乎是您没有指定保存格式,并且图像的默认保存格式PixelFormat.Format32bppArgb是PNG。路径上的文件扩展名将被忽略。

您需要将最后一行更改为

appearance.Save(@"F:\SignatureAppearance.jpeg", ImageFormat.Jpeg);

实际获得JPEG输出。

此外,您可能没有填写Bitmap您创建的全部内容,除非您的示例中省略了该代码。为了确保白色背景,您需要用白色填充任何未定义的像素,因为透明像素在 JPEG 编码器中映射为黑色。您上面的代码片段仅显示destination图像的子区域已定义。您可以通过插入来填充缺失的区域

graphics.Clear(Color.White);

在绘制子矩形之前。


推荐阅读