.netcore tif文件转jpg,并通过webapi返回
网上能搜到很多关于c# tif转jpg的代码。最简单的就是下面这段获得转换后的图片图片对象。在netcore 中使用这段代码时由于netcore框架已经不自带System.Drawing命名空间了所有没法直接使用下面的代码,
但好在netcore2.0版本新增了一个System.Drawing.Common的独立程序包,只需要通过Nuget安装System.Drawing.Common包,就能同.net framework框架一样使用如下代码了。
System.Drawing.Image image = System.Drawing.Image.FromFile(tifPath); //uploadTif 中tif图形文件 //取得图片大小 //System.Drawing.Size size = new System.Drawing.Size(1000, 600); //新建一个bmp图片 System.Drawing.Image bitmap = new System.Drawing.Bitmap(image.Width, image.Height); //新建一个画板 System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap); //设置高质量插值法 g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; //设置高质量,低速度呈现平滑程度 g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; //清空一下画布 g.Clear(System.Drawing.Color.White); //在指定位置画图 g.DrawImage(image, new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height), new System.Drawing.Rectangle(0, 0, image.Width, image.Height), System.Drawing.GraphicsUnit.Pixel);
下面是通过webapi将转换后的jpg 返回给http请求的代码
[HttpGet] [AllowAnonymous] public async Task<ActionResult> TifToJpg(string tifPath) {
System.Drawing.Image image = System.Drawing.Image.FromFile(tifPath); //uploadTif 中tif图形文件 //取得图片大小 //System.Drawing.Size size = new System.Drawing.Size(1000, 600); //新建一个bmp图片 System.Drawing.Image bitmap = new System.Drawing.Bitmap(image.Width, image.Height); //新建一个画板 System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap); //设置高质量插值法 g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; //设置高质量,低速度呈现平滑程度 g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; //清空一下画布 g.Clear(System.Drawing.Color.White); //在指定位置画图 g.DrawImage(image, new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height), new System.Drawing.Rectangle(0, 0, image.Width, image.Height), System.Drawing.GraphicsUnit.Pixel);
//保存高清晰度的缩略图到内存流
System.IO.MemoryStream memoryStream = new System.IO.MemoryStream();
bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Jpeg); //uploadTif 中tif文件
//将流以文件方式返回
return File(memoryStream.ToArray(), "image/jpeg", "demo.jpg");
}