2013-03-01 651 views
4

我使用Bitmap.Save(location,coded,parameters)保存tiff圖像的第一幀:使用的編碼方案是Tiff格式。然後我使用saveadd()等。像win 7 64位,上的魅力工作,但不適用於32位或更舊的Windows版本。Bitmap.Save參數無效

經過研究,我發現它可能是由於TIFF圖像編碼與GDI +之前的處理方式不同。

有沒有辦法在沒有任何劇烈變化的情況下克服這個問題?

來源:

Parameter is not valid calling Bitmap.Save()

http://social.msdn.microsoft.com/Forums/fi-FI/netfxbcl/thread/1585c562-f7a9-4cfd-9674-6855ffaa8653

+0

什麼是錯誤? – 2013-03-01 22:06:38

+0

所以,你鏈接到你問的確切問題,不是嗎?我知道這是一箇舊帖子,但重複是重複。 – 2013-03-01 22:06:40

+0

@Christian'參數無效'是Save()函數的錯誤 – Dexters 2013-03-01 22:26:02

回答

1

好的,終於找到了解決辦法。問題在於作爲Save()的輸入參數之一給出的壓縮格式以及GDI +如何工作。

解決方案1:

需要改變到一個受到該窗口中支持用於壓縮的格式。例如.net中的(long)EncoderValue.CompressionLZW壓縮在這種情況下工作,而不是(long)EncoderValue.CompressionCCITT4

但是圖像的大小會比CCITT4產生的大。 另外,CCITT4僅適用於雙色調圖像,而LZW適用於大多數圖像。 所以,想一想前面提到的這些問題,就像在大多數使用tiff圖像創建的地方一樣,對使用的壓縮和這個問題沒有太多的重要性。

或替代解決方案可以在下面[我還沒有嘗試過,雖然]

方案2中找到:

http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/1585c562-f7a9-4cfd-9674-6855ffaa8653/

補充閱讀:

所以質詢要選擇什麼樣的壓縮以及爲什麼會出現這種情況,你可以參考:

https://stackoverflow.com/questions/3478292/whats-the-recommended-tiff-compression-for-color-photos/3480411#3480411

9

您必須使用 「長」 的質量參數

EncoderParameters parametre = new EncoderParameters(1); 
parametre.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (quality as long)); 

EncoderParameters parametre = new EncoderParameters(1); 
parametre.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 90L); 

long quality=90; // 
EncoderParameters parametre = new EncoderParameters(1); 
parametre.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality); 
+0

是的,我正在使用不同的參數,但它的長期價值。沒有問題,我猜 – Dexters 2013-03-01 22:25:10

+0

我使用MultiFrame,FrameDimesion和Flus長 – Dexters 2013-03-01 22:30:32

+0

我正在使用(長)類型轉換所有參數。 – Dexters 2013-03-02 00:32:01