解析tiff生成为jpeg
起因
在项目中,一直借助插件来展示tif/tiff图片,最近部署一个项目中,需要在iPad显示tif图,总体来说tif图展示的需求,不是很大.解析tif图的两种方式
2.基于libtiff,.Net版本上手快,本次使用这种方式.
libtiff.net下载
1.直接在nuget安装到项目中.
使用LibTiff.Net是可以完全跨平台的,因为它有NetStandrand版本.
tif转jpeg代码
using System;
using System.IO;
using BitMiracle.LibTiff.Classic;
namespace TiffApp
{
class Program
{
/// <summary>
/// 测试解析tiff
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
Converter cnv = new Converter(); //来自Tiff2Rgba项目,直接复制而来
cnv.m_compression = Compression.JPEG;
string file = "1.TIF";
string fileName = Path.GetFileNameWithoutExtension(file); //获取文件名(去除扩展名)
int count = 0;
using (Tiff inImage = Tiff.Open(file, "r")) //读取tif文件
{
if (inImage == null)
return;
//获取tiff中的张数
do
{
count++;
} while (inImage.ReadDirectory());
}
Console.WriteLine($"tif中的张数:{count}");
//重新读取,不然保存的图片的顺序是相反
using (Tiff inImage = Tiff.Open(file, "r"))
{
if (inImage == null)
return;
for (int i = 0; i < count; i++)
{
string newName = $"{fileName}_{i}.jpeg"; //保存jpeg文件的文件名称
using (Tiff outImage = Tiff.Open(newName, "w")) //保存jpge文件
{
do
{
if (!cnv.tiffcvt(inImage, outImage) || !outImage.WriteDirectory())
break;
} while (inImage.ReadDirectory());
}
}
Console.WriteLine("save ok");
}
}
}
}
秋风
2017-04-11