zoukankan      html  css  js  c++  java
  • .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");
    }

      

  • 相关阅读:
    二维码的生成细节和原理
    java写入文件的几种方法分享
    实例讲解虚拟机3种网络模式(桥接、nat、Host-only)
    ARM平台安装Docker的方法
    ARM 平台Docker运行RabbitMQ 以及迁移的简单办法
    Oracle12c(未更新任何补丁) 使用compression=all 参数导出之后导入失败
    CentOS7 通过移植二进制文件的方式安装redis、nginx以及dotnet core的简单办法
    Oracle 以及 达梦数据库简单查询所有表行数的存储过程
    Java内存模型(转载)
    深入探讨 Java 类加载器(转载)
  • 原文地址:https://www.cnblogs.com/careychao/p/12036123.html
Copyright © 2011-2022 走看看