旋转后的图片大小增加了mb

时间:2018-11-18 16:30:32

标签: c# asp.net

某些图像正在网络中旋转。所以我已经借助RotateFlipType.Rotate90FlipNone在后端旋转了图像并保存了新图像。但是图像尺寸增加了很多。

像200kb一样在旋转后变为4MB。

有什么方法可以控制旋转图像的大小,但保持尺寸与原始图像相同。

代码

string filename = imagePath.Substring(imagePath.LastIndexOf("/") + 1);

Image image = Image.FromFile(Server.MapPath("~/files/" + filename));

using (Graphics g = Graphics.FromImage(image))
{
    if (image.PropertyItems.Any(p => p.Id == 274))
    {
        if (image.PropertyItems.Any(p => p.Value[0] == 6))
        {
            image.RotateFlip(RotateFlipType.Rotate90FlipNone);

            string fileNameWithoutExtnsn = Path.GetFileNameWithoutExtension(imagePath);
            fileNameWithoutExtnsn = fileNameWithoutExtnsn + '1';
            string fileExtnsn = Path.GetExtension(imagePath);
            filename = string.Format("{0}{1}", fileNameWithoutExtnsn, fileExtnsn);
            filePath = string.Format("{0}/{1}/{2}", urlPath, "files", filename);

            try
            {
                image.Save(Path.Combine(Server.MapPath("~/files/"), filename));
            }
            catch (Exception ex)
            {
                throw;
            }
        }
    }                   
}

1 个答案:

答案 0 :(得分:0)

RotateFlip将格式转换为MemoryBmp。因此,将图片另存为Jpeg

image.Save("filePath", ImageFormat.Jpeg);