某些图像正在网络中旋转。所以我已经借助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;
}
}
}
}
答案 0 :(得分:0)
RotateFlip将格式转换为MemoryBmp。因此,将图片另存为Jpeg
image.Save("filePath", ImageFormat.Jpeg);