我的图像是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();
答案 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
}
}