![](/img/trans.png)
[英]Copy image with alpha channel to clipboard with custom background color?
[英]How can I get an image out of the clipboard without losing the alpha channel in .NET?
我正在嘗試從剪貼板保存復制的圖像,但它正在丟失其alpha通道:
Image clipboardImage = Clipboard.GetImage();
string imagePath = Path.GetTempFileName();
clipboardImage.Save(imagePath);
如果我從PhotoShop或IE / Firefox / Chrome復制32位圖像並運行上面的代碼,則輸出會丟失其Alpha通道,而是在黑色背景下保存。
圖像保存為PNG,可以包含Alpha通道。
正確的數據似乎在剪貼板中,因為粘貼到其他應用程序(例如PhotoShop)會保留alpha通道。
任何人都可以讓我擺脫痛苦嗎?
提前致謝!
更新:
// outputs FALSE
Debug.WriteLine(Image.IsAlphaPixelFormat(Clipboard.GetImage().PixelFormat));
以上表明,一旦從剪貼板中取出,alpha數據就會丟失。 也許我需要以其他方式將其從剪貼板中刪除?
而不是調用Clipboard.GetImage()
,嘗試調用Clipboard.GetDataObject()
這將返回一個IDataObject,您可以通過調用dataObject.GetFormats()
來查詢它。 GetFormats()
返回Clipboard對象支持的類型格式 - 可以使用更精確的格式來提取數據。
我只是使用Forms方法。 它不像使用像凱文這樣的GetFormat
這樣的好解決方案告訴我們,但它更快,並且工作安靜得很好。
'Dim bm As BitmapSource = Clipboard.GetImage()'looses alpha channel
'Dim bmS As New WriteableBitmap(bm)'does work but still without alpha information
Dim bmF As System.Drawing.Bitmap = System.Windows.Forms.Clipboard.GetImage 'Get working image
Dim bmS As BitmapSource = TB.Imaging.WPF.BitmapToWpfBitmapSource(bmF, Me) 'convert Bitmap into BitmapSource
Me.Source = bmS
圖像被保存為位圖,透明像素在剪貼板上可見,因此請使用此代碼
Bitmap clipboardImage = Clipboard.GetImage();
clipboardImage.MakeTransparent()
string imagePath = Path.GetTempFileName();
clipboardImage.Save(imagePath);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.