Load ảnh vào PictureBox trong C#
Show Cập nhật lần cuối: 20 Tháng Hai 2018 4,691 Lượt xem
Thiết kế giao diệnMục đích của bài viết này là để hướng dẫn bạn cách để chuyển đổi hình ảnh thành dạng byte và ngược lại một cách trực quan nhất. nên mình sẽ thiết kế một giao diện winform để dễ dàng hình dung hơn. Giao diện phần mềm thiết kế để thử nghiệm công việc Giao diện mình thiết kế sử dụng bao gồm:1 textbox để lưu trữ đường dẫn hình ảnh, 1 Richbox để lưu trữ đoạn byte của hình ảnh sau khi chuyển, 1 listview để hiển thị hình ảnh được chuyển từ byte, và các button thao tác. Bây giờ chúng ta sẽ viết các đoạn mã để mô tả từng bước của thao tác chuyển đổi.
Lấy đường dẫn hình vào Textbox bằng Open File DialogNhấn đôi vào nút chọn hình ảnh (để tạo sự kiện click cho nút này) sau đó code đoạn sau sự kiện đó. OpenFileDialog openFile = new OpenFileDialog(); openFile.Filter = "Pictures files (*.jpg, *.jpeg, *.jpe, *.jfif, *.png)|*.jpg; *.jpeg; *.jpe; *.jfif; *.png|All files (*.*)|*.*"; openFile.FilterIndex = 1; openFile.RestoreDirectory = true; if (openFile.ShowDialog() == DialogResult.OK) { textBox1.Text = openFile.FileName; } Và kết quả là lấy được đường dẫn đầy đủ đến file hình ảnh đã chọn. Kết quả là lấy được đường dẫn hình ảnh bằng Open File Dialog Bây giờ mình sẽ tiến hành chuyển đổi nó thành dạng byte để lưu vào CSDL. Viết hàm chuyển đổi hình ảnh sang dạng byteTại phần code-behind và sao chép đoạn hàm sau vào. private byte[] converImgToByte() { FileStream fs; fs = new FileStream(textBox1.Text,FileMode.Open,FileAccess.Read); byte[] picbyte = new byte[fs.Length]; fs.Read(picbyte, 0, System.Convert.ToInt32(fs.Length)); fs.Close(); return picbyte; } Lưu ý một số điều sau:
Sau đó nhấn đôi vào nút “Chuyển đổi hình ảnh thành byte” để vào phần code sự kiện click của nút này và gọi đến hàm trên như sau: richTextBox1.Text = Convert.ToBase64String(converImgToByte()); Đoạn trên là để cover kiểu byte thành chuỗi để hiển thị trên Convert.FromBase64String(Đoạn_String_đã_cover); Kết quả sau khi chuyển đổi. Một đoạn chuỗi byte được chuyển từ hình ảnh Viết hàm chuyển đổi byte sang hình ảnhTrong phần Code-behindm thêm hàm sau vào, hàm này có nhiệm vụ tiếp nhận đoạn chuỗi đã chuyển đổi từ byte hình ảnh sang kiểu hình ảnh. private Image ByteToImg (string byteString) { byte[] imgBytes = Convert.FromBase64String(byteString); MemoryStream ms = new MemoryStream(imgBytes , 0, imgBytes .Length); ms.Write(imgBytes , 0, imgBytes.Length); Image image = Image.FromStream(ms, true); return image; } Bây giờ bạn sẽ có lại hình ảnh như bình thường, có nhiều cách bạn có thể hiển thị hình ảnh này trở lại, như hiển thị trên Bạn trở lại phần Tool, tìm và kéo thả công cụ ImageList vào Form. Sau đó chọn Nhấn đôi vào nút “ imageList1.Images.Add(ByteToImg(richTextBox1.Text)); imageList1.ImageSize = new Size(132, 132); this.listView1.View = View.LargeIcon; for (int counter = 0; counter < imageList1.Images.Count; counter++) { ListViewItem item = new ListViewItem(); item.ImageIndex = counter; this.listView1.Items.Add(item); } this.listView1.LargeImageList = imageList1; Giải thích một chút:
Sau khi hoàn thành thì bạn có thể text thử. Kết quả chuyển đổi dữ liệu Bạn có thể sử dụng chuỗi đã được chuyển đổi để lưu vào CSDL bình thường, sau đó lấy ra và chuyển đổi để có hình ảnh như cũ. Bạn có thể tham khảo bài viết Thêm, đọc, sửa, xóa (CRUD) cơ sở dữ liệu SQL Server trong C# để biết cách thêm xóa sửa dữ liệu SQL server trong lập trình C# hoặc nếu sử dụng XML bạn tham khảo bài viết Đọc ghi dữ liệu xml trong C#. Chúc bạn thành công ! |