總結一下圖片相關,常用的幾個操作 一 創建Image物件
1. 手頭上有一些圖片檔案,希望轉換成 c# 中 Image物件,然后加以使用,
public static System.Drawing.Image FromFile (string filename);
舉個例子,建立一個winform工程,設定一下表單的背景圖片,
public partial class Form1 : Form { public Form1() { InitializeComponent(); Image image = Image.FromFile("Image.png"); this.BackgroundImage = image; } }
運行效果:

二 圖片存盤與顯示
1. Image ---> Byte陣列
Image物件保存成byte陣列,進而存盤在檔案或者資料庫里,
using (var memoryStream = new MemoryStream()) { var image = Image.FromFile("Image.png"); image.Save(memoryStream, ImageFormat.Png); var byteArr = memoryStream.ToArray(); }
2. Byte陣列 ---> Image
從檔案或資料庫里讀出來的資料,也可以再轉換成Image物件,
var image1 = new ImageConverter().ConvertFrom(byteArr); this.BackgroundImage = (Image)image1;
直接讀取圖片檔案存盤的二進制資料也可以轉換成Image物件,
var originByte = File.ReadAllBytes("Image.png"); var image1 = new ImageConverter().ConvertFrom(originByte); this.BackgroundImage = (Image)image1;
比較一下兩者的二進制資料,還是有差異的,Image物件的資料量更大一些,但是經過我的測驗,
兩種資料都能被ImageConverter正確決議,
private void button1_Click(object sender, EventArgs e) { using (var memoryStream = new MemoryStream()) { var image = Image.FromFile("Image.png"); image.Save(memoryStream, ImageFormat.Png); var byteArr = memoryStream.ToArray(); var originByte = File.ReadAllBytes("Image.png"); WriteData("imageObj.txt", byteArr); WriteData("originFile.txt", originByte); } } private static void WriteData(string filename, byte[] target) { var list = new List<string>(); for (var i = 0; i < target.Length; i++) { list.Add($"{i}-->{target[i]}"); } File.AppendAllLines(filename, list); }
我換了一張很小的圖片做比較,可以參考一下比較的片段,從第36個位元組后不相同,

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/103505.html
標籤:C#
上一篇:C#擴展方法學習筆記
下一篇:C#通過反射呼叫類及方法
