使用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");
            }
        }
    }
}

那么,既然周围没有好的例子,这是怎么回事?我需要在这里修复什么?

感谢

使用c#调整图像大小

您可以这样做:

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