我想了解並實現Tiff壓縮的一段代碼。 (第一種方法體積龐大)和圖像保存方法http://msdn.microsoft.com/en-us/library/ytz20d80%28v=vs.110%29.aspx(第二種方法僅適用於Windows 7計算機,但不適用於Windows 2003或2008服務器)我已經使用了2種獨立技術 - 使用第三方dll的LibTiff.NEt(第一種方法很笨重)和圖像保存方法,http://msdn.microsoft.com/en-us/library/ytz20d80%28v=vs.110%29.aspx 。c#Tiff文件壓縮方法
現在我正在尋找探索這第三種方法。
using System.Windows.Forms;
using System.Windows.Media.Imaging;
using System.Drawing.Imaging;
int width = 800;
int height = 1000;
int stride = width/8;
byte[] pixels = new byte[height*stride];
// Try creating a new image with a custom palette.
List<System.Windows.Media.Color> colors = new List<System.Windows.Media.Color>();
colors.Add(System.Windows.Media.Colors.Red);
colors.Add(System.Windows.Media.Colors.Blue);
colors.Add(System.Windows.Media.Colors.Green);
BitmapPalette myPalette = new BitmapPalette(colors);
// Creates a new empty image with the pre-defined palette
BitmapSource image = BitmapSource.Create(
width,
height,
96,
96,
System.Windows.Media.PixelFormats.BlackWhite,
myPalette,
pixels,
stride);
FileStream stream = new FileStream(Original_File, FileMode.Create);
TiffBitmapEncoder encoder = new TiffBitmapEncoder();
encoder.Compression = TiffCompressOption.Ccitt4;
encoder.Frames.Add(BitmapFrame.Create(image));
encoder.Save(stream);
但我沒有對這裏發生的事情有充分的瞭解。
顯然有一種類型的壓縮技術正在應用的內存流。但我有點困惑如何將這個應用到我的具體情況。我有一個原始的tiff文件,我想使用此方法將其壓縮設置爲CCITT並將其保存。誰能幫忙?
我複製了上面的代碼並運行代碼。但我的最終輸出文件是純黑色背景圖像。雖然積極的一面是正確的壓縮類型。
http://msdn.microsoft.com/en-us/library/ms616002%28v=vs.110%29.aspx
你爲什麼添加asp.net標籤?你在做這個是一個asp.net項目嗎? – mbeckish
是的。我有一個網頁,允許用戶輸入,然後轉換成一個tiff文件。這個tiff文件的原始壓縮類型是LZW。我需要CCITT壓縮格式。 – Philo
您可能會遇到問題,因爲[ASP.NET服務中不支持圖形命名空間](http://stackoverflow.com/q/390532/21727) – mbeckish