Iori的工具箱 之 C# 實現多個圖片合為一個Tiff
功能:
合併多個圖片為一個TIFF檔案
效果圖:
第二頁
第三頁
功能函式實現:
public bool SaveMultipage(Image[] bmp, string location, string type)
{
if (bmp != null)
{
try
{
File.Delete(location);
var codecInfo = getCodecForstring(type);
if (bmp.Length == 1)
{
var iparams = new EncoderParameters(1);
var iparam = Encoder.Compression;
var iparamPara = new EncoderParameter(iparam, (long)(EncoderValue.CompressionNone));
iparams.Param[0] = iparamPara;
bmp[0].Save(location, codecInfo, iparams);
}
else if (bmp.Length > 1)
{
// Save the first page (frame).
var encoderParam1 = new EncoderParameter(Encoder.SaveFlag, (long)EncoderValue.MultiFrame);
var encoderParam2 = new EncoderParameter(Encoder.Compression,
(long) EncoderValue.CompressionNone);
var encoderParams = new EncoderParameters(2);
encoderParams.Param[0] = encoderParam1;
encoderParams.Param[1] = encoderParam2;
bmp[0].Save(location, codecInfo, encoderParams);
for (int i = 1; i < bmp.Length; i++)
{
if (bmp[i] == null)
break;
encoderParams.Param[0] = encoderParam1;
encoderParams.Param[1] = new EncoderParameter(Encoder.SaveFlag, (long)EncoderValue.FrameDimensionPage);
bmp[0].SaveAdd(bmp[i], encoderParams);
}
encoderParams.Param[0] = new EncoderParameter(Encoder.SaveFlag, (long)EncoderValue.Flush);
bmp[0].SaveAdd(encoderParams);
}
return true;
}
catch (Exception ee)
{
throw new Exception(ee.Message + " Error in saving as multipage ");
}
}
return false;
}
private ImageCodecInfo getCodecForstring(string type)
{
var info = ImageCodecInfo.GetImageEncoders();
return (info.Select(t => new {t, enumName = type})
.Where(@t1 => @t1.t.FormatDescription.Equals(@t1.enumName))
.Select(@t1 => @t1.t))
.FirstOrDefault();
}
程式碼說明:引數:圖片陣列,儲存檔案的位置,儲存型別
單元測試程式碼實現:
[TestMethod]
public void Multiple_Image_Into_1Tiff_With_MultiplePages()
{
const string multipleImgPath = "C:\\Users\\Public\\Pictures\\Sample Pictures";
var files = new DirectoryInfo(multipleImgPath).GetFiles("*.jpg", SearchOption.TopDirectoryOnly);
Assert.IsTrue(files.Length > 1);
var imgs = files.Select(f => Image.FromFile(f.FullName));
SaveMultipage(imgs.ToArray(), "C:\\multiplePageTiff.tiff", "TIFF");
const string singleImgPath = @"C:\Users\{your_pc_name}\Pictures\SingleImg";
files = new DirectoryInfo(singleImgPath).GetFiles("*.jpg", SearchOption.TopDirectoryOnly);
Assert.IsTrue(files.Length == 1);
imgs = files.Select(f => Image.FromFile(f.FullName));
SaveMultipage(imgs.ToArray(), "C:\\multiplePageTiff_Single.tiff", "TIFF");
}
程式碼說明:
1.測試多個圖片的轉化
2.測試單個突破的轉化
相關文章
- 多個APP合併為一個APP開發的實現方案APP
- c#一個批次下載圖片的類C#
- 如何實現一個圖片載入框架框架
- 分享一個圖片驗證碼功能的實現
- 如何使用css3實現一個div設定多張背景圖片?CSSS3
- 一個基於Vue的圖片輪播元件的實現Vue元件
- Vue實現一個圖片懶載入外掛Vue
- 如何實現一個簡易的圖片上傳Web ServerWebServer
- php 實現一個簡單的圖片邊緣檢測PHP
- rsscombine:將多個RSS源合併為一個源
- C# 實現PPT 每一頁轉成圖片C#
- 用Vue實現一個掘金沸點圖片展示元件Vue元件
- 如何自己動手實現一個圖片解答小助手
- 一個實現批量抓取淘女郎寫真圖片的爬蟲爬蟲
- 圖片合併成PDF,兩個PDF的合併
- Python多個陣列合並(拼接)為一個陣列Python陣列
- 多個commit合併成一個MIT
- 用canvas實現一個自動識別兩張圖片差異(圖片找不同)的功能Canvas
- 實現簡單的輪播圖(單張圖片、多張圖片)
- 實現一個簡單的基於 WebAssembly 的圖片處理應用Web
- 手把手教你實現一個支援外掛化的 uTools 工具箱(一)
- CSS背景圖片集中在同一個圖片CSS
- 求一個手機多選上傳圖片的好外掛
- 一個去掉圖片背景的網站網站
- Flutter: 完成一個圖片APPFlutterAPP
- C#實現一個萬物皆可排序的佇列C#排序佇列
- 使用C#實現一個PPT遙控器C#
- CSS3 設定多個背景圖片CSSS3
- JavaScript之實現一個簡單的VueJavaScriptVue
- 多個excel檔案合併成一個excel表的方法 如何快速合併多個excel檔案Excel
- 如何在Github提交圖片,做一個自己的圖片倉庫Github
- 個人圖床配置,實現部落格園圖片上傳自由圖床
- C# 截圖並儲存為圖片C#
- HDF格式遙感影像批次轉為TIFF格式:ArcPy實現
- Python實現求多個集合之間並集的方法Python
- 多個excel檔案合併到一個檔案中的多個sheet表中Excel
- 分享一個好用的線上工具箱
- 擼了一個簡陋的圖片站
- 一個提取圖片顏色的React元件React元件