首先项目中引入BitMiracle.LibTiff.NET的dll

命名空间:

using BitMiracle.LibTiff.Classic;
using System.Runtime.InteropServices;
using System.Windows.Forms;

private static Bitmap TiffToBitmap(string asTiffFile)
  {
   Bitmap bmp = null;
   try
   {
    bmp = (Bitmap)Bitmap.FromFile(asTiffFile);
    return bmp;
   }
   catch
   {
   }
   Tiff tif = Tiff.Open(asTiffFile, "r");
   if (tif == null)
   {
    return null;
   }
   // Find the width and height of the image
   FieldValue[] value = tif.GetField(TiffTag.IMAGEWIDTH);
   int width = value[0].ToInt();

value = tif.GetField(TiffTag.IMAGELENGTH);
   int height = value[0].ToInt();

// Read the image into the memory buffer
   int[] raster = new int[height * width];

if (!tif.ReadRGBAImage(width, height, raster))
   {
    tif.Close();
    tif.Dispose();
    return null;
   }
   tif.Close();
   tif.Dispose();
   // bitmap作成
   bmp = new Bitmap(width, height, PixelFormat.Format24bppRgb);
   Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
   BitmapData bmpdata = bmp.LockBits(rect, ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
   byte[] bits = new byte[bmpdata.Stride * bmpdata.Height];

for (int y = 0; y < bmp.Height; y++)
   {
    int rasterOffset = y * bmp.Width;
    int bitsOffset = (bmp.Height - y - 1) * bmpdata.Stride;

for (int x = 0; x < bmp.Width; x++)
    {
     int rgba = raster[rasterOffset++];
     bits[bitsOffset++] = (byte)((rgba >> 16) & 0xff);
     bits[bitsOffset++] = (byte)((rgba >> 8) & 0xff);
     bits[bitsOffset++] = (byte)(rgba & 0xff);
    }
   }
   Marshal.Copy(bits, 0, bmpdata.Scan0, bits.Length);
   bmp.UnlockBits(bmpdata);
   return bmp;
  }

使用方法:

Bitmap oBmp = TiffToBitmap(asFileName);

Tiff转换Bitmap处理方法相关推荐

  1. [M]MagicTable转换异常解决方法

    [M]MagicTable转换异常解决方法 参考文章: (1)[M]MagicTable转换异常解决方法 (2)https://www.cnblogs.com/yiyun/p/5259384.html ...

  2. SQL语句行列转换两种方法 case ...when 和pivot函数应用

    2019独角兽企业重金招聘Python工程师标准>>> SQL语句行列转换两种方法 case ...when 和pivot函数应用SQL语句行列转换两种方法 case ...when ...

  3. java整型转换为数组_基于java中byte数组与int类型的转换(两种方法)

    java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形 ...

  4. python代码转换为pytorch_python基础教程Pytorch之Tensor和Numpy之间的转换的实现方法...

    为什么要相互转换: 1. 要对tensor进行操作,需要先启动一个Session,否则,我们无法对一个tensor比如一个tensor常量重新赋值或是做一些判断操作,所以如果将它转化为numpy数组就 ...

  5. php将abc转换成整形是什么意思,php强制转换类型的方法

    php强制转换类型的方法 发布时间:2020-07-02 15:45:14 来源:亿速云 阅读:102 作者:Leah 本篇文章为大家展示了php强制转换类型的方法,代码简明扼要并且容易理解,绝对能使 ...

  6. arcpy投影(三)——定义投影、地理变换关系自定义和投影变换Project_managemen(含基准面/椭球体转换参数使用方法,arcpro/arcmap)

    arcpy投影这一个专题从文件位置.文件含义.空间参照获取.转换关系查询.投影定义.自定义转换关系.投影变换这几个角度上系统的进行了介绍,整理出了: arcpy投影(一)--prj.gtf文件定义.路 ...

  7. vdi转vmdk VirtualBox与VMware硬盘格式转换及使用方法

    vdi转vmdk Virtual Box与VMware硬盘格式转换及使用方法 一.找到对应文件位置 1.首先找到需要转换的vdi文件位置 2.找到VirtualBox里VBoxManage.exe的位 ...

  8. golang string转int8_Go教程:23 string转换int类型方法对比

    Go教程:23 string转换int类型方法对比 Go语言时一个强类型的语言,但是强类型的语言有也强类型的语言的烦恼.这个烦恼就是类型转换, 接下来我们就讲解一下怎么把 string 类型变量转换成 ...

  9. 腾讯视频QLV格式转换mp4的方法

    腾讯视频QLV格式转换mp4的方法不知道大家知不知道用?喜欢用腾讯视频的朋友应该都知道腾讯视频单独搞出了个QLV格式文件,只能用腾讯独有的腾讯视频软件才能播放,就算用格式工厂转换也不行,那么腾讯视频的 ...

最新文章

  1. 基于Dijkstra算法的武汉地铁路径规划!
  2. 把热带雨林搬进办公室!这样的互联网公司!我愿意加班至死!
  3. 多态时:成员特点,成员变量
  4. 计算机网络知识点1——计算机网络概述
  5. Spring 2.5中文版手册
  6. python 列联表自动拆分_python自动化办公:实现按照一列内容拆分excel
  7. .net数据库连接池配置技巧(默认值)
  8. es6 迭代器对象的 return(),throw()
  9. SqlServer两表之间:根据一个表的字段更新另一个表的字段
  10. centos7 安装 openssl和openssl升级
  11. 易基因|3文读懂:m6A甲基化在动物肌肉发育中的重要作用(猪+鸡+山羊)
  12. vue仿163musicPC端
  13. 运维的升级打怪之路v2版
  14. 硕士论文各章节的篇幅多少比较合适
  15. spring如何注入作用域不同的bean
  16. 工作阶段总结记录20221020
  17. JAVA实现100以内偶数和,奇数和,奇偶和
  18. wps表单小程序 服务器错误,微信小程序WPS表单怎么在钉钉使用
  19. BUAA全排列数的生成
  20. 即时通讯中语音视频聊天后面的技术支持有哪些

热门文章

  1. 如何构建自己的投资体系--做一个笨小孩
  2. kaldi中跑thchs30
  3. 图数据库:从传统关系型数据库说起
  4. 蓝桥杯-蓝跳跳(矩阵快速幂 70%数据)
  5. Discuz! 论坛软件系统简介
  6. 2.ElasticSearch系列之集群权限认证
  7. 91.动画的简单使用
  8. win10笔记本右下角恢复电量角标显示
  9. 深入理解ROC曲线和EER及其之间的关系
  10. Ubuntu Linux server 连接WIFI无线网络【命令行】