C# 直接複製GIF圖片到QQ和微信

在C#中操作剪貼板複製圖片時,如果是普通圖片,可直接將其複製爲Bitmap,這樣到QQ、微信中粘貼的時候就會直接顯示

但是,如果是GIF圖片,則粘貼後會發現其無法動,因爲將其作爲Bitmap複製時,只複製了首幀過去,自然動不了

從網上查找解決辦法,因爲我是準備在UWP中實現這個,所以一直以UWP爲關鍵字搜索,沒有找到任何結果,後來以“C# 複製GIF到QQ”爲關鍵字來搜索,總算搜到了有用的內容

大致的解決辦法就是,因爲剪貼板本身不支持複製GIF圖片,所以要將圖片轉成html的形式去複製,但是其中有一些參數是需要注意的,StartHTML、EndHTML、StartFragment、EndFragment

下面封裝了一個方法,可以將本地的gif複製,在QQ、微信中可直接粘貼

public static string HtmlFormatConstruct(string gifPath)
{
	string html = "";
	{
		var htmlPath = Path.GetTempFileName();
		string version = "Version:0.9" + Environment.NewLine;
		string startHtml = "StartHTML:";
		string endHtml = "EndHTML:";
		string startFragment = "StartFragment:";
		string endFragment = "EndFragment:";
		string sourceUrl = "SourceURL:file:///" + htmlPath + Environment.NewLine;
		string htmlContentStart = "<html><body>" + Environment.NewLine;
		string fragmentContent = "<!--StartFragment-->" + "<img src=\"file:///" + gifPath + "\" />" +
								 "<!--EndFragment-->";
		string htmlContentEnd = "</body></html>";
		startHtml += (version.Length
					  + startHtml.Length + 8 + Environment.NewLine.Length
					  + endHtml.Length + 8 + Environment.NewLine.Length
					  + startFragment.Length + 8 + Environment.NewLine.Length
					  + endFragment.Length + 8 + Environment.NewLine.Length
					  + sourceUrl.Length).ToString().PadLeft(8, '0') + Environment.NewLine;
		endHtml += (version.Length
					+ startHtml.Length
					+ endHtml.Length + 8 + Environment.NewLine.Length
					+ startFragment.Length + 8 + Environment.NewLine.Length
					+ endFragment.Length + 8 + Environment.NewLine.Length
					+ sourceUrl.Length
					+ htmlContentStart.Length
					+ fragmentContent.Length
					+ htmlContentEnd.Length).ToString().PadLeft(8, '0') + Environment.NewLine;
		startFragment += (version.Length
						 + startHtml.Length
						 + endHtml.Length
						 + startFragment.Length + 8 + Environment.NewLine.Length
						 + endFragment.Length + 8 + Environment.NewLine.Length
						 + sourceUrl.Length
						 + htmlContentStart.Length).ToString().PadLeft(8, '0') + Environment.NewLine;
		endFragment += (version.Length
						+ startHtml.Length
						+ endHtml.Length
						+ startFragment.Length
						+ endFragment.Length + 8 + Environment.NewLine.Length
						+ sourceUrl.Length
						+ htmlContentStart.Length
						+ fragmentContent.Length).ToString().PadLeft(8, '0') + Environment.NewLine;
		html = version + startHtml + endHtml + startFragment + endFragment + htmlContentStart +
			   fragmentContent + htmlContentEnd;
	}
	return html;
}

將返回值以Html的模式設置到剪貼板即可,按我的理解,QQ和微信會去解析<!--StartFragment-->和<!--EndFragment-->之間的內容並粘貼,如果想要加些水印、尾巴什麼的,也可加在這之間

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章