使用c#调整图像大小
本文关键字:图像 调整 使用 | 更新日期: 2023-09-27 18:23:53
在C#中调整图像文件的大小,至少从那些常用的文件(bmp、jpg等)
我发现了很多片段,但不是一个真正完整的。所以我要再问一次,这样谁来这里可能会使用一个完整的文件:
这只是输出一个具有相同宽度和高度的文件。
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
namespace PicResize
{
class Program
{
static void Main(string[] args)
{
ResizeImage(0, 0, 200, 200);
}
public static void ResizeImage(int X1, int Y1, int Width, int Height)
{
string fileName = @"C:'testimage.jpg";
using (Image image = Image.FromFile(fileName))
{
using (Graphics graphic = Graphics.FromImage(image))
{
// Crop and resize the image.
Rectangle destination = new Rectangle(0, 0, Width, Height);
graphic.DrawImage(image, destination, X1, Y1, Width, Height, GraphicsUnit.Pixel);
}
image.Save(@"C:'testimagea.jpg");
}
}
}
}
那么,既然周围没有好的例子,这是怎么回事?我需要在这里修复什么?
感谢
您可以这样做:
public void ResizeImage(string fileName, int width, int height)
{
using (Image image = Image.FromFile(fileName))
{
new Bitmap(image, width, height).Save(fileName);
}
}
如果是一个新文件,只需用这个或您选择的自定义路径替换即可:
new Bitmap(image, width, height).Save(fileName.Insert(fileName.LastIndexOf('.'),"A"));
示例代码的问题在于,您正在打开图像,并简单地绘制到该图像上,而实际上没有更改大小。
您可以在原始图像的基础上创建一个新的Bitmap
,并为其提供新的大小。这个功能应该适用于您:
public void ResizeImage(string fileName, int width, int height)
{
using (Image image = Image.FromFile(fileName))
{
using (Image newImage = new Bitmap(image, width, height))
{
//must dispose the original image to free up the file ready
//for re-write, otherwise saving will throw an error
image.Dispose();
newImage.Save(fileName);
}
}
}