2011-04-07 89 views
4

我有一個奇怪的問題,將剪貼板圖像保存爲PNG。當使用prtscr或剪切工具截圖時,它可以很好地處理Clipboard.GetImage()和PngBitmapEncoder。但是當從Paint複製圖像並執行相同操作時,我會得到一個空的圖像。至少在試圖查看它時看起來是空的,儘管它似乎包含有效的PNG圖像數據。當使用Jpeg編碼器時,它工作正常。 PNG和Paint有什麼問題?它與透明度有什麼關係?.NET:將剪貼板圖像保存到PNG失敗

更新 澄清:我從剪貼板中成功地提取圖像。我只是不能將它保存到使用PNGEncoder的光盤上,如果圖像是從Paint首先複製的。儘管我可以使用JpegEncoder保存繪畫剪貼板圖像,但是我想使用PNG。

BitmapSource source = Clipboard.GetImage(); 
PngBitmapEncoder enc = new PngBitmapEncoder(); 
enc.Frames.Add(BitmapFrame.Create(source)); 
enc.Save(stream); 

以上代碼生成一個圖像文件與隱形內容,變成了完全黑或白取決於觀衆(來自,CTRL-C複製時,從描繪)。這導致我認爲它與透明度有關...

+0

你能提供一個代碼示例嗎? – Arjen 2011-04-07 12:59:44

回答

3

您的問題看起來與我所描述的here非常相似......我建議的解決方案可能適合您。

+0

謝謝托馬斯!我用你的ImageFromClipboardDib,它工作的很棒!我嘗試了CopyPixels,並自己重新設置了alpha通道,但成功了。來自副本像素的數據僅爲白色(255)。但是你的代碼做到了! – 2011-04-07 15:06:14

+0

同樣在這裏。無法弄清楚爲什麼從MSPaint複製的圖像是空的。托馬斯的代碼做了訣竅。 – 2015-04-04 14:38:48

0

我會首先嚐試類似ClipSpy的東西來檢查哪個應用程序將哪種類型的內容放在剪貼板上。