■ .NET で libtiff を使うには...
* 「LibTiff.Net」を使用する
LibTiff.Net
公式サイトhttps://bitmiracle.com/libtiff/
サンプル
https://github.com/BitMiracle/libtiff.net/tree/master/Samples
ライセンス
* New BSD license設定
* NuGet で「BitMiracle.LibTiff.NET」をインストールする
■ サンプル
* 公式サイト内の「ReadSamples」をみて、サンプルを作成してみた(簡単!)https://github.com/BitMiracle/libtiff.net/blob/master/Samples/ReadSamples/C%23/ReadSamples.cs
* サンプル画像は、これまた公式サイト内にあるので、それを利用させてもらったhttps://github.com/BitMiracle/libtiff.net/tree/master/Samples/Sample%20Data
Form1.cs
using BitMiracle.LibTiff.Classic; using System; using System.Drawing; using System.Windows.Forms; namespace SampleForm { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { // Open the TIFF image(TIFF画像を開く) using (Tiff tiffImage = Tiff.Open(@"C:\temp\dscf0013.tif", "r")) { if (tiffImage == null) { MessageBox.Show("Could not open incoming image"); return; } // Find the width and height of the image(画像の幅と高さを取得) FieldValue[] value = tiffImage.GetField(TiffTag.IMAGEWIDTH); int width = value[0].ToInt(); value = tiffImage.GetField(TiffTag.IMAGELENGTH); int height = value[0].ToInt(); int imageSize = height * width; int[] raster = new int[imageSize]; // Read the image into the memory buffer() if (!tiffImage.ReadRGBAImage(width, height, raster)) { MessageBox.Show("Could not read image"); return; } Bitmap bitmap = new Bitmap(width, height); for (int x = 0; x < bitmap.Width; ++x) { for (int y = 0; y < bitmap.Height; ++y) { bitmap.SetPixel(x, y, GetPixcel(x, y, raster, width, height)); } } if (this.pictureBox1.Image != null) { this.pictureBox1.Image.Dispose(); } this.pictureBox1.Image = bitmap; } } private static Color GetPixcel(int x, int y, int[] raster, int width, int height) { int offset = (height - y - 1) * width + x; int red = Tiff.GetR(raster[offset]); int green = Tiff.GetG(raster[offset]); int blue = Tiff.GetB(raster[offset]); return Color.FromArgb(red, green, blue); } } }