调整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");
}
}
}
}
所以,既然周围没有好的例子,它是如何运作的?我需要在这里解决什么?
由于
答案 0 :(得分:3)
你可以这样做:
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"));
答案 1 :(得分:2)
您的示例代码的问题在于您打开图像,并简单地绘制到该图像,而不实际更改大小。
您可以做的是根据原始图片创建新的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);
}
}
}