日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

Tif文件合并类

發(fā)布時(shí)間:2023/11/27 生活经验 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Tif文件合并类 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
using System;
using System.Collections;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;namespace Common
{/// <summary>/// Title Tif文件合并類/// Author:ward/// </summary>public class Tiff{/// <summary>  /// 獲取圖像頁(yè)數(shù)  /// </summary>  /// <param name="imagePath"></param>  /// <returns></returns>  public static int GetPageNumber(string imagePath){using (Image image = Bitmap.FromFile(imagePath)){Guid objGuid = image.FrameDimensionsList[0];FrameDimension objDimension = new FrameDimension(objGuid);return image.GetFrameCount(objDimension);}}/// <summary>  /// 將給定的文件 拼接輸出到指定的tif文件路徑  /// </summary>  /// <param name="imageFiles">文件路徑列表</param>  /// <param name="outFile">拼接后保存的 tif文件路徑</param>  /// <param name="compressEncoder">壓縮方式,建議CompressionCCITT4</param>  public static void JoinTiffImages(ArrayList imageFiles, string outFile, EncoderValue compressEncoder){//如果只有一個(gè)文件,直接復(fù)制到目標(biāo)  if (imageFiles.Count == 1){File.Copy((string)imageFiles[0], outFile, true);return;}Encoder enc = Encoder.SaveFlag;EncoderParameters ep = new EncoderParameters(2);ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.MultiFrame);ep.Param[1] = new EncoderParameter(Encoder.Compression, (long)compressEncoder);Bitmap pages = null;int frame = 0;ImageCodecInfo info = GetEncoderInfo("image/tiff");foreach (string strImageFile in imageFiles){if (frame == 0){pages = (Bitmap)Image.FromFile(strImageFile);//保存第一個(gè)tif文件 到目標(biāo)處  
                    pages.Save(outFile, info, ep);}else{//保存好第一個(gè)tif文件后,其余 設(shè)置為添加一幀到 圖像中  ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.FrameDimensionPage);Bitmap bm = (Bitmap)Image.FromFile(strImageFile);pages.SaveAdd(bm, ep);bm.Dispose();}if (frame == imageFiles.Count - 1){//flush and close.  ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.Flush);pages.SaveAdd(ep);}frame++;}pages.Dispose(); //釋放資源  return;}/// <summary>  /// 拼接兩個(gè)tif文件 保存到文件2中  /// </summary>  /// <param name="filePath">tif文件1</param>  /// <param name="targetFile">tif文件2</param>  public static void AppendToTiff(string filePath, string targetFile){ArrayList list = new ArrayList(); //保存所有 tif文件路徑  #region 分割tif文件1  string tempDirectory1 = string.Empty;list.AddRange(SplitTif(filePath, out tempDirectory1));#endregion#region 分割tif文件2  string tempDirectory2 = string.Empty;list.AddRange(SplitTif(targetFile, out tempDirectory2));#endregion//2. 拼接所有tif頁(yè)  //2.1 刪除原目標(biāo)文件  
            File.Delete(targetFile);//2.2 拼接 并按原路徑生成tif文件  
            JoinTiffImages(list, targetFile, EncoderValue.CompressionCCITT3);//3. 刪除臨時(shí)目錄  DirectoryInfo di2 = new DirectoryInfo(tempDirectory2);di2.Delete(true);DirectoryInfo di1 = new DirectoryInfo(tempDirectory1);di1.Delete(true);}/// <summary>  /// 將給定文件  分割成多個(gè)tif文件 到臨時(shí)目錄下  /// </summary>  /// <param name="targetFile">目標(biāo)文件</param>  /// <param name="tempDirectory">臨時(shí)目錄路徑,刪除用</param>  /// <returns>分割后多個(gè)文件路徑集合</returns>  public static ArrayList SplitTif(string targetFile, out string tempDirectory){ArrayList list = new ArrayList();using (Image img = Image.FromFile(targetFile)){Guid guid = img.FrameDimensionsList[0];System.Drawing.Imaging.FrameDimension dimension = new System.Drawing.Imaging.FrameDimension(guid);int nTotFrame = img.GetFrameCount(dimension); //tif總頁(yè)數(shù)  int nLoop = 0; //索引  //生成臨時(shí)目錄 存放 單tif頁(yè)  tempDirectory = Path.Combine(Path.GetDirectoryName(targetFile), Guid.NewGuid().ToString());if (!Directory.Exists(tempDirectory)){Directory.CreateDirectory(tempDirectory);}EncoderParameters ep = new EncoderParameters(2);ep.Param[0] = new EncoderParameter(Encoder.SaveFlag, (long)EncoderValue.MultiFrame);ep.Param[1] = new EncoderParameter(Encoder.Compression, (long)EncoderValue.CompressionCCITT3);//壓縮方式  CompressionCCITT3主要用于傳真  
ImageCodecInfo info = GetEncoderInfo("image/tiff");for (nLoop = 0; nLoop < nTotFrame; nLoop++){img.SelectActiveFrame(dimension, nLoop);//保存 單tif頁(yè)  string newfilePath = Path.Combine(tempDirectory, nLoop.ToString() + ".tif");img.Save(newfilePath, info, ep);//將路徑存入 list中  
                    list.Add(newfilePath);}}return list;}/// <summary>  /// 獲取支持的編碼信息  /// </summary>  /// <param name="mimeType">協(xié)議描述</param>  /// <returns>圖像編碼信息</returns>  private static ImageCodecInfo GetEncoderInfo(string mimeType){ImageCodecInfo[] encoders = ImageCodecInfo.GetImageEncoders();for (int j = 0; j < encoders.Length; j++){if (encoders[j].MimeType == mimeType)return encoders[j];}throw new Exception(mimeType + " mime type not found in ImageCodecInfo");}}
}

?

轉(zhuǎn)載于:https://www.cnblogs.com/lee2011/p/6170238.html

總結(jié)

以上是生活随笔為你收集整理的Tif文件合并类的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。