国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C# - C#無損轉換Image為Icon的方法

C#無損轉換Image為Icon的方法

2021-12-30 14:31AhDung C#

這篇文章主要為大家詳細介紹了C#無損轉換Image為Icon的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

如題,市面上常見的方法是:

?
1
2
var handle = bmp.GetHicon();  //得到圖標句柄
return Icon.FromHandle(handle); //通過句柄得到圖標

此法的問題是,如果圖像是透明背景,那么得到的Icon的邊緣就是毛糙的,像是先墊了一層背景色然后再去色的效果,很不如人意,用過的朋友都知道。尚未研究是bmp.GetHicon出的問題,還是Icon.FromHandle有問題,日后有閑心再搗鼓下。

下面給出完美轉換方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/// <summary>
/// 轉換Image為Icon
/// </summary>
/// <param name="image">要轉換為圖標的Image對象</param>
/// <param name="nullTonull">當image為null時是否返回null。false則拋空引用異常</param>
/// <exception cref="ArgumentNullException" />
public static Icon ConvertToIcon(Image image, bool nullTonull = false)
{
  if (image == null)
  {
    if (nullTonull) { return null; }
    throw new ArgumentNullException("image");
  }
 
  using (MemoryStream msImg = new MemoryStream()
           , msIco = new MemoryStream())
  {
    image.Save(msImg, ImageFormat.Png);
 
    using (var bin = new BinaryWriter(msIco))
    {
      //寫圖標頭部
      bin.Write((short)0);      //0-1保留
      bin.Write((short)1);      //2-3文件類型。1=圖標, 2=光標
      bin.Write((short)1);      //4-5圖像數量(圖標可以包含多個圖像)
 
      bin.Write((byte)image.Width); //6圖標寬度
      bin.Write((byte)image.Height); //7圖標高度
      bin.Write((byte)0);      //8顏色數(若像素位深>=8,填0。這是顯然的,達到8bpp的顏色數最少是256,byte不夠表示)
      bin.Write((byte)0);      //9保留。必須為0
      bin.Write((short)0);      //10-11調色板
      bin.Write((short)32);     //12-13位深
      bin.Write((int)msImg.Length); //14-17位圖數據大小
      bin.Write(22);         //18-21位圖數據起始字節
 
      //寫圖像數據
      bin.Write(msImg.ToArray());
 
      bin.Flush();
      bin.Seek(0, SeekOrigin.Begin);
      return new Icon(msIco);
    }
  }
}

如碼所示,方法的原理是:

1、先將image編碼為png
2、再將png原樣包裝成一個icon

第1步雖然是重編碼,但png是無損格式,圖像質量不會有絲毫損失。然后在二進制層面原封不動的把轉換得到的png塞入圖標。所以整個方法擔得起【無損】的說法,介意失真的朋友請放心使用。注意:方法中并未對原圖size做檢查、處理,所以請先確保原圖的尺寸符合圖標規格再傳入;另外,不負責銷毀原圖,請調用者在外部負責。

下面是閑扯:

為了解決這個問題還真費了番功夫,stackoverflow、codeproject等神跡多現的地方逛了幾圈都沒找到如意的法子,思索一番后感覺可以從圖標格式上嘗試,然后在萬能的msdn果然找到一篇講icon格式的文檔:https://msdn.microsoft.com/en-us/library/ms997538.aspx,還好不算很難理解,一番嘗試之下,方法出爐。

-文畢-

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
  • C#深入解析C#中的交錯數組與隱式類型的數組

    深入解析C#中的交錯數組與隱式類型的數組

    這篇文章主要介紹了深入解析C#中的交錯數組與隱式類型的數組,隱式類型的數組通常與匿名類型以及對象初始值設定項和集合初始值設定項一起使用,需要的...

    C#教程網6172021-11-09
  • C#C#通過KD樹進行距離最近點的查找

    C#通過KD樹進行距離最近點的查找

    這篇文章主要為大家詳細介紹了C#通過KD樹進行距離最近點的查找,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    帆帆帆6112022-01-22
  • C#WPF 自定義雷達圖開發實例教程

    WPF 自定義雷達圖開發實例教程

    這篇文章主要介紹了WPF 自定義雷達圖開發實例教程,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下...

    WinterFish13112021-12-06
  • C#C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    這篇文章主要介紹了C# 實現對PPT文檔加密、解密及重置密碼的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下...

    E-iceblue5012022-02-12
  • C#C#實現XML文件讀取

    C#實現XML文件讀取

    這篇文章主要為大家詳細介紹了C#實現XML文件讀取的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Just_for_Myself6702022-02-22
  • C#Unity3D實現虛擬按鈕控制人物移動效果

    Unity3D實現虛擬按鈕控制人物移動效果

    這篇文章主要為大家詳細介紹了Unity3D實現虛擬按鈕控制人物移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一...

    shenqingyu060520232410972022-03-11
  • C#C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    這篇文章主要介紹了C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題,簡單描述了訪問者模式的定義并結合具體實例形式分析了C#使用訪問者模式解決長...

    GhostRider9502022-01-21
  • C#C#裁剪,縮放,清晰度,水印處理操作示例

    C#裁剪,縮放,清晰度,水印處理操作示例

    這篇文章主要為大家詳細介紹了C#裁剪,縮放,清晰度,水印處理操作示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    吳 劍8332021-12-08
主站蜘蛛池模板: 亚洲成人一级 | 国产午夜精品一区二区三区嫩草 | 欧美日韩视频 | 色婷婷激情综合 | 免费看国产一级片 | 色综合天天综合网国产成人网 | 成人一区二区在线观看 | 日韩国产一区二区三区 | 日韩电影免费观看 | 黄色小视频在线免费观看 | 天天干夜操 | 国产精品日韩一区 | 亚洲视频 欧美视频 | 国产欧美日韩一区二区三区 | 亚洲精品一区二三区不卡 | 国产美女www | 精品日韩一区二区三区 | 日韩精品一区二区三区四区五区 | 国变精品美女久久久久av爽 | 97在线观看视频 | 亚洲一区久久 | 国产在线综合网 | 欧美国产在线视频 | 日韩在线观看中文 | 国产毛片欧美毛片久久久 | 国产一区二区视频在线 | 国产一区在线免费观看 | 久久久一区二区 | 午夜国产精品成人 | 亚洲国产aⅴ精品一区二区 少妇一级片免费看 | 91视频进入| 免费91视频 | 欧美日韩亚洲一区二区三区 | 日韩视频在线一区 | 国产精品极品美女在线观看免费 | 精品国产成人 | 老司机福利在线视频 | 一级做a爰片性色毛片精油 欧美中文字幕在线观看 | av天天看| 中文字幕在线三区 | 97精品国产97久久久久久免费 |