图像在C#中调整大小,图像中的徽标和文本对齐到顶部

时间:2016-11-11 11:43:25

标签: c#

我的图像是3519 X 2495,旁边有一些徽标和文字。打开图像时,我会在中间看到徽标和旁边的文字。我想将图像调整为768 X 1004,并希望徽标和旁边的文字显示在顶部。当我调整图像大小时,我会在中心旁边看到徽标和文字。

有没有一种很好的方法可以在c#中实现这一目标。

我尝试了以下代码

Image image = Image.FromFile(@"D:\SSH\Automation\ImageResize\Diageo.jpg");
Bitmap bitmap = new Bitmap(768, 1004);

Graphics graphics = Graphics.FromImage(bitmap);
graphics.DrawImage(image, 0, 0, 768, 1004);
bitmap.Save(@"D:\SSH\Automation\ImageResize\Diageo.png");
graphics.Dispose();

1 个答案:

答案 0 :(得分:0)

要调整图像大小并保持其初始宽高比,请使用以下代码:

请注意,我使用using界面中的IDisposable而不是自己调用Dispose,因为这被视为最佳做法并且更安全。

int maxWidth = 768;
int maxHeight = 1004;

using (Bitmap bitmap = new Bitmap(filePath))
{
    int width = (int)(bitmap.Width * (maxHeight / (float)bitmap.Height));
    int height = maxHeight;

    if (bitmap.Height * (maxWidth / (float)bitmap.Width) <= maxHeight)
    {
        width = maxWidth;
        height = (int)(bitmap.Height * (maxWidth / (float)bitmap.Width));
    }

    using (Bitmap resizedBitmap = new Bitmap(width, height))
    {
        resizedBitmap.SetResolution(bitmap.HorizontalResolution, bitmap.VerticalResolution);

        using (Graphics g = Graphics.FromImage(resizedBitmap))
        {
            g.DrawImage(bitmap, 0, 0, resizedBitmap.Width, resizedBitmap.Height);
        }

        //Use resizedBitmap here
    }
}