簡體   English   中英

從MemoryStream c#進行JPEG解壓縮

[英]JPEG decompression from MemoryStream c#

在我的程序中,我將BMP壓縮為JPEG,如下所示:

private void ConvertBmpToStreamJPG30(Bitmap b, Stream s)
{
  s.Flush();
  EncoderParameters encoderParameters = new EncoderParameters(1);
  encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 30L);
  b.Save(s, GetEncoder(ImageFormat.Jpeg), encoderParameters);
}

然后一個函數在MemoryStream中接收JPEG,我通過執行以下操作將其轉換為位圖

Bitmap b = new Bitmap(stream);

當我顯示圖像時,有很多行是這樣的:

屏幕截圖

我在做什么錯,人?

編輯1這里是一個顯示問題的小型Visual Studio解決方案: http : //www.fast-files.com/getfile.aspx?file=79311

這是屏幕共享軟件的開始。 它的作用:獲取屏幕截圖,對其進行比較,壓縮差異並將其發送到程序的另一部分,然后對該文件進行解壓縮並使用接收到的所有內容重新構成圖像。 它會打開一個窗口,在左側顯示“已發送”的內容,在右側顯示已重組的圖像。

我想到三件事:

  1. 嘗試將質量設置為30以上,看看是否有幫助;
  2. 檢查您的RAM(可能還有視頻RAM,盡管我懷疑GDI +可能使用VGA進行壓縮)是否存在硬件問題;
  3. 我有一個類似的怪異問題 ,我加載了一些JPEG文件,對其進行了一點修改,然后再次保存。 那產生了一個例外。 解決方案是在舊的位圖的基礎上制作一個新的位圖並保存副本。 試試看

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM