使用c#调整图像大小

时间:2013-07-19 15:45:44

标签: c# image resize graphic

调整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");
            }
        }
    }
}

所以,既然周围没有好的例子,它是如何运作的?我需要在这里解决什么?

由于

2 个答案:

答案 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);
        }
    }
}