diff --git a/labs/CameraCard/CameraCard/Infrastructure/ImageHelper.cs b/labs/CameraCard/CameraCard/Infrastructure/ImageHelper.cs index ad3ca012..8635e604 100644 --- a/labs/CameraCard/CameraCard/Infrastructure/ImageHelper.cs +++ b/labs/CameraCard/CameraCard/Infrastructure/ImageHelper.cs @@ -38,7 +38,7 @@ public static class ImageHelper var info = ImageCodecInfo.GetImageEncoders().First(o => o.FormatID == ImageFormat.Jpeg.Guid); using (var encoderParams = new EncoderParameters(1)) { - using (var param = new EncoderParameter(Encoder.Quality, 90L)) + using (var param = new EncoderParameter(Encoder.Quality, 70L)) { encoderParams.Param[0] = param; image.Save("temp.jpg", info, encoderParams); diff --git a/labs/CameraCard/CameraCard/MainForm.Designer.cs b/labs/CameraCard/CameraCard/MainForm.Designer.cs index 1feef1a6..cec09fc5 100644 --- a/labs/CameraCard/CameraCard/MainForm.Designer.cs +++ b/labs/CameraCard/CameraCard/MainForm.Designer.cs @@ -53,6 +53,8 @@ this.tab2 = new System.Windows.Forms.TabPage(); this.groupGrid = new System.Windows.Forms.DataGridView(); this.tab3 = new System.Windows.Forms.TabPage(); + this.pull = new System.Windows.Forms.Button(); + this.push = new System.Windows.Forms.Button(); this.totalPageValue = new System.Windows.Forms.Label(); this.pageIndexSelector = new System.Windows.Forms.ComboBox(); this.pageMenu = new System.Windows.Forms.FlowLayoutPanel(); @@ -66,16 +68,6 @@ this.label1 = new System.Windows.Forms.Label(); this.classSelector = new System.Windows.Forms.ComboBox(); this.dataGrid = new System.Windows.Forms.DataGridView(); - this.tab4 = new System.Windows.Forms.TabPage(); - this.tabControl2 = new System.Windows.Forms.TabControl(); - this.tabPage1 = new System.Windows.Forms.TabPage(); - this.checkUpdate = new System.Windows.Forms.Button(); - this.tabPage2 = new System.Windows.Forms.TabPage(); - this.tabPage3 = new System.Windows.Forms.TabPage(); - this.tabPage4 = new System.Windows.Forms.TabPage(); - this.statusStrip1 = new System.Windows.Forms.StatusStrip(); - this.statusLabel = new System.Windows.Forms.ToolStripStatusLabel(); - this.versionLabel = new System.Windows.Forms.ToolStripStatusLabel(); this.StudentName = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.Sex = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.Nation = new System.Windows.Forms.DataGridViewTextBoxColumn(); @@ -88,9 +80,32 @@ this.HasChedked = new System.Windows.Forms.DataGridViewCheckBoxColumn(); this.HasUploaded = new System.Windows.Forms.DataGridViewCheckBoxColumn(); this.StudentId = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.tab4 = new System.Windows.Forms.TabPage(); + this.tabControl2 = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.checkUpdate = new System.Windows.Forms.Button(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.tabPage3 = new System.Windows.Forms.TabPage(); + this.tabPage4 = new System.Windows.Forms.TabPage(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.statusLabel = new System.Windows.Forms.ToolStripStatusLabel(); + this.versionLabel = new System.Windows.Forms.ToolStripStatusLabel(); + this.save = new System.Windows.Forms.Button(); this.idCard = new CameraCard.IdCard(); - this.push = new System.Windows.Forms.Button(); - this.pull = new System.Windows.Forms.Button(); + this.stuName = new System.Windows.Forms.Label(); + this.stuSex = new System.Windows.Forms.Label(); + this.stuNation = new System.Windows.Forms.Label(); + this.stuBirthday = new System.Windows.Forms.Label(); + this.stuCardType = new System.Windows.Forms.Label(); + this.stuCardNo = new System.Windows.Forms.Label(); + this.stuStudentNumber = new System.Windows.Forms.Label(); + this.stuExamNo = new System.Windows.Forms.Label(); + this.stuLanguage = new System.Windows.Forms.Label(); + this.stuStudentType = new System.Windows.Forms.Label(); + this.stuSchool = new System.Windows.Forms.Label(); + this.stuYear = new System.Windows.Forms.Label(); + this.stuClassNo = new System.Windows.Forms.Label(); + this.stuNameValue = new System.Windows.Forms.Label(); tab1 = new System.Windows.Forms.TabPage(); tab1.SuspendLayout(); this.idcGroupBox.SuspendLayout(); @@ -111,6 +126,7 @@ // // tab1 // + tab1.Controls.Add(this.save); tab1.Controls.Add(this.idcGroupBox); tab1.Controls.Add(this.groupBox1); tab1.Controls.Add(this.shotBtn); @@ -142,13 +158,27 @@ // this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox1.Controls.Add(this.stuNameValue); + this.groupBox1.Controls.Add(this.stuClassNo); + this.groupBox1.Controls.Add(this.stuYear); + this.groupBox1.Controls.Add(this.stuSchool); + this.groupBox1.Controls.Add(this.stuStudentType); + this.groupBox1.Controls.Add(this.stuLanguage); + this.groupBox1.Controls.Add(this.stuExamNo); + this.groupBox1.Controls.Add(this.stuStudentNumber); + this.groupBox1.Controls.Add(this.stuCardNo); + this.groupBox1.Controls.Add(this.stuCardType); + this.groupBox1.Controls.Add(this.stuBirthday); + this.groupBox1.Controls.Add(this.stuNation); + this.groupBox1.Controls.Add(this.stuSex); + this.groupBox1.Controls.Add(this.stuName); this.groupBox1.Controls.Add(this.photo); this.groupBox1.Location = new System.Drawing.Point(173, 9); this.groupBox1.Name = "groupBox1"; this.groupBox1.Size = new System.Drawing.Size(426, 249); this.groupBox1.TabIndex = 6; this.groupBox1.TabStop = false; - this.groupBox1.Text = "学籍信息"; + this.groupBox1.Text = "学生考籍信息"; // // photo // @@ -164,7 +194,7 @@ // shotBtn // this.shotBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.shotBtn.Location = new System.Drawing.Point(764, 462); + this.shotBtn.Location = new System.Drawing.Point(714, 462); this.shotBtn.Name = "shotBtn"; this.shotBtn.Size = new System.Drawing.Size(75, 34); this.shotBtn.TabIndex = 4; @@ -370,6 +400,25 @@ this.tab3.Text = "图像管理"; this.tab3.UseVisualStyleBackColor = true; // + // pull + // + this.pull.Location = new System.Drawing.Point(20, 18); + this.pull.Name = "pull"; + this.pull.Size = new System.Drawing.Size(75, 23); + this.pull.TabIndex = 15; + this.pull.Text = "下载"; + this.pull.UseVisualStyleBackColor = true; + this.pull.Click += new System.EventHandler(this.pull_Click); + // + // push + // + this.push.Location = new System.Drawing.Point(893, 19); + this.push.Name = "push"; + this.push.Size = new System.Drawing.Size(75, 23); + this.push.TabIndex = 14; + this.push.Text = "上传"; + this.push.UseVisualStyleBackColor = true; + // // totalPageValue // this.totalPageValue.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); @@ -531,6 +580,94 @@ this.dataGrid.VirtualMode = true; this.dataGrid.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.grid_CellFormatting); // + // StudentName + // + this.StudentName.DataPropertyName = "Name"; + this.StudentName.HeaderText = "姓名"; + this.StudentName.Name = "StudentName"; + this.StudentName.ReadOnly = true; + // + // Sex + // + this.Sex.DataPropertyName = "Sex"; + this.Sex.HeaderText = "性别"; + this.Sex.Name = "Sex"; + this.Sex.ReadOnly = true; + // + // Nation + // + this.Nation.DataPropertyName = "Nation"; + this.Nation.HeaderText = "民族"; + this.Nation.Name = "Nation"; + this.Nation.ReadOnly = true; + // + // IdCardNo + // + this.IdCardNo.DataPropertyName = "IdCardNo"; + this.IdCardNo.HeaderText = "身份证号"; + this.IdCardNo.Name = "IdCardNo"; + this.IdCardNo.ReadOnly = true; + // + // Class + // + this.Class.DataPropertyName = "Class"; + this.Class.HeaderText = "班级"; + this.Class.Name = "Class"; + this.Class.ReadOnly = true; + // + // Number + // + this.Number.DataPropertyName = "Number"; + this.Number.HeaderText = "学籍号"; + this.Number.Name = "Number"; + this.Number.ReadOnly = true; + // + // Image + // + this.Image.DataPropertyName = "Image"; + this.Image.HeaderText = "图像"; + this.Image.ImageLayout = System.Windows.Forms.DataGridViewImageCellLayout.Zoom; + this.Image.Name = "Image"; + this.Image.ReadOnly = true; + // + // HasImage + // + this.HasImage.DataPropertyName = "HasImage"; + this.HasImage.HeaderText = "已采集"; + this.HasImage.Name = "HasImage"; + this.HasImage.ReadOnly = true; + // + // HasIdCard + // + this.HasIdCard.DataPropertyName = "HasIdCard"; + this.HasIdCard.HeaderText = "已验证身份证"; + this.HasIdCard.Name = "HasIdCard"; + this.HasIdCard.ReadOnly = true; + // + // HasChedked + // + this.HasChedked.DataPropertyName = "HasChecked"; + this.HasChedked.HeaderText = "已审核"; + this.HasChedked.Name = "HasChedked"; + this.HasChedked.ReadOnly = true; + this.HasChedked.Resizable = System.Windows.Forms.DataGridViewTriState.True; + this.HasChedked.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; + // + // HasUploaded + // + this.HasUploaded.DataPropertyName = "HasUploaded"; + this.HasUploaded.HeaderText = "已上传"; + this.HasUploaded.Name = "HasUploaded"; + this.HasUploaded.ReadOnly = true; + // + // StudentId + // + this.StudentId.DataPropertyName = "Id"; + this.StudentId.HeaderText = "Id"; + this.StudentId.Name = "StudentId"; + this.StudentId.ReadOnly = true; + this.StudentId.Visible = false; + // // tab4 // this.tab4.Controls.Add(this.tabControl2); @@ -632,93 +769,16 @@ this.versionLabel.Size = new System.Drawing.Size(14, 17); this.versionLabel.Text = "v"; // - // StudentName - // - this.StudentName.DataPropertyName = "Name"; - this.StudentName.HeaderText = "姓名"; - this.StudentName.Name = "StudentName"; - this.StudentName.ReadOnly = true; + // save // - // Sex - // - this.Sex.DataPropertyName = "Sex"; - this.Sex.HeaderText = "性别"; - this.Sex.Name = "Sex"; - this.Sex.ReadOnly = true; - // - // Nation - // - this.Nation.DataPropertyName = "Nation"; - this.Nation.HeaderText = "民族"; - this.Nation.Name = "Nation"; - this.Nation.ReadOnly = true; - // - // IdCardNo - // - this.IdCardNo.DataPropertyName = "IdCardNo"; - this.IdCardNo.HeaderText = "身份证号"; - this.IdCardNo.Name = "IdCardNo"; - this.IdCardNo.ReadOnly = true; - // - // Class - // - this.Class.DataPropertyName = "Class"; - this.Class.HeaderText = "班级"; - this.Class.Name = "Class"; - this.Class.ReadOnly = true; - // - // Number - // - this.Number.DataPropertyName = "Number"; - this.Number.HeaderText = "学籍号"; - this.Number.Name = "Number"; - this.Number.ReadOnly = true; - // - // Image - // - this.Image.DataPropertyName = "Image"; - this.Image.HeaderText = "图像"; - this.Image.ImageLayout = System.Windows.Forms.DataGridViewImageCellLayout.Zoom; - this.Image.Name = "Image"; - this.Image.ReadOnly = true; - // - // HasImage - // - this.HasImage.DataPropertyName = "HasImage"; - this.HasImage.HeaderText = "已采集"; - this.HasImage.Name = "HasImage"; - this.HasImage.ReadOnly = true; - // - // HasIdCard - // - this.HasIdCard.DataPropertyName = "HasIdCard"; - this.HasIdCard.HeaderText = "已验证身份证"; - this.HasIdCard.Name = "HasIdCard"; - this.HasIdCard.ReadOnly = true; - // - // HasChedked - // - this.HasChedked.DataPropertyName = "HasChecked"; - this.HasChedked.HeaderText = "已审核"; - this.HasChedked.Name = "HasChedked"; - this.HasChedked.ReadOnly = true; - this.HasChedked.Resizable = System.Windows.Forms.DataGridViewTriState.True; - this.HasChedked.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; - // - // HasUploaded - // - this.HasUploaded.DataPropertyName = "HasUploaded"; - this.HasUploaded.HeaderText = "已上传"; - this.HasUploaded.Name = "HasUploaded"; - this.HasUploaded.ReadOnly = true; - // - // StudentId - // - this.StudentId.DataPropertyName = "Id"; - this.StudentId.HeaderText = "Id"; - this.StudentId.Name = "StudentId"; - this.StudentId.ReadOnly = true; - this.StudentId.Visible = false; + this.save.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.save.Location = new System.Drawing.Point(795, 462); + this.save.Name = "save"; + this.save.Size = new System.Drawing.Size(75, 34); + this.save.TabIndex = 8; + this.save.Text = "保存"; + this.save.UseVisualStyleBackColor = true; + this.save.Click += new System.EventHandler(this.save_Click); // // idCard // @@ -727,24 +787,131 @@ this.idCard.Size = new System.Drawing.Size(420, 200); this.idCard.TabIndex = 8; // - // push - // - this.push.Location = new System.Drawing.Point(893, 19); - this.push.Name = "push"; - this.push.Size = new System.Drawing.Size(75, 23); - this.push.TabIndex = 14; - this.push.Text = "上传"; - this.push.UseVisualStyleBackColor = true; - // - // pull - // - this.pull.Location = new System.Drawing.Point(20, 18); - this.pull.Name = "pull"; - this.pull.Size = new System.Drawing.Size(75, 23); - this.pull.TabIndex = 15; - this.pull.Text = "下载"; - this.pull.UseVisualStyleBackColor = true; - this.pull.Click += new System.EventHandler(this.pull_Click); + // stuName + // + this.stuName.AutoSize = true; + this.stuName.Location = new System.Drawing.Point(7, 21); + this.stuName.Name = "stuName"; + this.stuName.Size = new System.Drawing.Size(41, 12); + this.stuName.TabIndex = 6; + this.stuName.Text = "姓名:"; + // + // stuSex + // + this.stuSex.AutoSize = true; + this.stuSex.Location = new System.Drawing.Point(107, 21); + this.stuSex.Name = "stuSex"; + this.stuSex.Size = new System.Drawing.Size(41, 12); + this.stuSex.TabIndex = 7; + this.stuSex.Text = "性别:"; + // + // stuNation + // + this.stuNation.AutoSize = true; + this.stuNation.Location = new System.Drawing.Point(215, 21); + this.stuNation.Name = "stuNation"; + this.stuNation.Size = new System.Drawing.Size(41, 12); + this.stuNation.TabIndex = 8; + this.stuNation.Text = "民族:"; + // + // stuBirthday + // + this.stuBirthday.AutoSize = true; + this.stuBirthday.Location = new System.Drawing.Point(6, 43); + this.stuBirthday.Name = "stuBirthday"; + this.stuBirthday.Size = new System.Drawing.Size(65, 12); + this.stuBirthday.TabIndex = 9; + this.stuBirthday.Text = "出生日期:"; + // + // stuCardType + // + this.stuCardType.AutoSize = true; + this.stuCardType.Location = new System.Drawing.Point(7, 69); + this.stuCardType.Name = "stuCardType"; + this.stuCardType.Size = new System.Drawing.Size(65, 12); + this.stuCardType.TabIndex = 10; + this.stuCardType.Text = "证件类型:"; + // + // stuCardNo + // + this.stuCardNo.AutoSize = true; + this.stuCardNo.Location = new System.Drawing.Point(6, 92); + this.stuCardNo.Name = "stuCardNo"; + this.stuCardNo.Size = new System.Drawing.Size(65, 12); + this.stuCardNo.TabIndex = 11; + this.stuCardNo.Text = "证件号码:"; + // + // stuStudentNumber + // + this.stuStudentNumber.AutoSize = true; + this.stuStudentNumber.Location = new System.Drawing.Point(7, 114); + this.stuStudentNumber.Name = "stuStudentNumber"; + this.stuStudentNumber.Size = new System.Drawing.Size(53, 12); + this.stuStudentNumber.TabIndex = 12; + this.stuStudentNumber.Text = "学籍号:"; + // + // stuExamNo + // + this.stuExamNo.AutoSize = true; + this.stuExamNo.Location = new System.Drawing.Point(7, 136); + this.stuExamNo.Name = "stuExamNo"; + this.stuExamNo.Size = new System.Drawing.Size(53, 12); + this.stuExamNo.TabIndex = 13; + this.stuExamNo.Text = "考籍号:"; + // + // stuLanguage + // + this.stuLanguage.AutoSize = true; + this.stuLanguage.Location = new System.Drawing.Point(7, 158); + this.stuLanguage.Name = "stuLanguage"; + this.stuLanguage.Size = new System.Drawing.Size(77, 12); + this.stuLanguage.TabIndex = 14; + this.stuLanguage.Text = "外语语种号:"; + // + // stuStudentType + // + this.stuStudentType.AutoSize = true; + this.stuStudentType.Location = new System.Drawing.Point(146, 161); + this.stuStudentType.Name = "stuStudentType"; + this.stuStudentType.Size = new System.Drawing.Size(65, 12); + this.stuStudentType.TabIndex = 15; + this.stuStudentType.Text = "学生标识:"; + // + // stuSchool + // + this.stuSchool.AutoSize = true; + this.stuSchool.Location = new System.Drawing.Point(7, 227); + this.stuSchool.Name = "stuSchool"; + this.stuSchool.Size = new System.Drawing.Size(65, 12); + this.stuSchool.TabIndex = 16; + this.stuSchool.Text = "所属学校:"; + // + // stuYear + // + this.stuYear.AutoSize = true; + this.stuYear.Location = new System.Drawing.Point(7, 204); + this.stuYear.Name = "stuYear"; + this.stuYear.Size = new System.Drawing.Size(65, 12); + this.stuYear.TabIndex = 17; + this.stuYear.Text = "注册年份:"; + // + // stuClassNo + // + this.stuClassNo.AutoSize = true; + this.stuClassNo.Location = new System.Drawing.Point(7, 181); + this.stuClassNo.Name = "stuClassNo"; + this.stuClassNo.Size = new System.Drawing.Size(65, 12); + this.stuClassNo.TabIndex = 18; + this.stuClassNo.Text = "班级编码:"; + // + // stuNameValue + // + this.stuNameValue.AutoSize = true; + this.stuNameValue.Location = new System.Drawing.Point(45, 21); + this.stuNameValue.Name = "stuNameValue"; + this.stuNameValue.Size = new System.Drawing.Size(17, 12); + this.stuNameValue.TabIndex = 19; + this.stuNameValue.Text = "空"; // // MainForm // @@ -764,6 +931,7 @@ tab1.ResumeLayout(false); this.idcGroupBox.ResumeLayout(false); this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.photo)).EndInit(); this.panel1.ResumeLayout(false); this.panel1.PerformLayout(); @@ -844,5 +1012,20 @@ private System.Windows.Forms.DataGridViewTextBoxColumn StudentId; private System.Windows.Forms.Button pull; private System.Windows.Forms.Button push; + private System.Windows.Forms.Button save; + private System.Windows.Forms.Label stuClassNo; + private System.Windows.Forms.Label stuYear; + private System.Windows.Forms.Label stuSchool; + private System.Windows.Forms.Label stuStudentType; + private System.Windows.Forms.Label stuLanguage; + private System.Windows.Forms.Label stuExamNo; + private System.Windows.Forms.Label stuStudentNumber; + private System.Windows.Forms.Label stuCardNo; + private System.Windows.Forms.Label stuCardType; + private System.Windows.Forms.Label stuBirthday; + private System.Windows.Forms.Label stuNation; + private System.Windows.Forms.Label stuSex; + private System.Windows.Forms.Label stuName; + private System.Windows.Forms.Label stuNameValue; } } \ No newline at end of file diff --git a/labs/CameraCard/CameraCard/MainForm.cs b/labs/CameraCard/CameraCard/MainForm.cs index 932d385d..7de6b23e 100644 --- a/labs/CameraCard/CameraCard/MainForm.cs +++ b/labs/CameraCard/CameraCard/MainForm.cs @@ -28,30 +28,6 @@ namespace CameraCard InitializeComponent(); this.versionLabel.Alignment = ToolStripItemAlignment.Right; this.versionLabel.Text += Assembly.GetExecutingAssembly().GetName().Version.ToString(); - //var dataTable = new DataTable(); - //var student = new Student(); - //dataTable.Columns.Add("Id", typeof(string)); - //dataTable.Columns.Add("姓名", typeof(string)); - //dataTable.Columns.Add("性别", typeof(string)); - //dataTable.Columns.Add("民族", typeof(string)); - //dataTable.Columns.Add("身份证号", typeof(string)); - //dataTable.Columns.Add("班级", typeof(string)); - //dataTable.Columns.Add("考籍号", typeof(string)); - //dataTable.Columns.Add("图像", typeof(Image)); - //dataTable.Columns.Add("身份证验证", typeof(bool)); - //dataTable.Columns.Add("已采集", typeof(bool)); - //dataTable.Columns.Add("已上传", typeof(bool)); - //for (int i = 0; i < 20000; i++) - //{ - // var imageValue = "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"; - - // using (var ms = new MemoryStream(Convert.FromBase64String(imageValue))) - // { - // var image = Image.FromStream(ms); - // dataTable.Rows.Add(i.ToString(), i.ToString(), student.Sex, student.Nation, student.IdCardNo, student.Class, student.Number, image, student.HasIdCardChecked, student.HasImage, student.HasUploaded); - // } - //} - //this.grid.DataSource = dataTable; } private void MainFrom_Load(object sender, EventArgs e) @@ -243,7 +219,7 @@ namespace CameraCard { this.photo.Image?.Dispose(); this.photo.Image = bitmap2.ResizeImage(this._photoWidth, this._photoHeight); - var base64Value = $"data:image/jpeg;base64,{this.photo.Image.ToBase64()}"; + var base64Value = this.photo.Image.ToBase64(); } } } @@ -294,6 +270,24 @@ namespace CameraCard this.idCard.idcDepartmentValue.Text = model.Department; this.idCard.idcValidDateValue.Text = $"{model.ValidDateStart}-{model.ValidDateEnd}"; this.idCard.idcSamIDValue.Text = model.SamID; + using (var db = new MyDbContext()) + { + var student = db.Students.FirstOrDefault(o => o.IdCardNo == model.IdCardNo); + if (student != null) + { + student.HasIdCard = true; + db.SaveChanges(); + this.stuNameValue.Text = student.Name; + this.photo.Image?.Dispose(); + if (student.Image != null) + { + using (var ms = new MemoryStream(Convert.FromBase64String(student.Image))) + { + this.photo.Image = System.Drawing.Image.FromStream(ms); + } + } + } + } } private void checkUpdate_Click(object sender, EventArgs e) @@ -334,9 +328,9 @@ namespace CameraCard { if (this.dataGrid.Columns[e.ColumnIndex].Name.Equals("Image")) { - //if (e.Value != null) + if (e.Value != null) { - using (var ms = new MemoryStream(Convert.FromBase64String("R0lGODlhdQAmAKIAAOYyL+rU4llg6Jmd8e92dCky4eEGAv///yH5BAAAAAAALAAAAAB1ACYAAAP/eLrc/jC2IEoZMATJu/9gyFVWIUyksIls677LUJbrEcxWDe98f+CWk4I0w/iOSNANKJQBC8mo9LEEDp8F3XR7rOIU2Cx3jHwKsUKyWqRhEEvGN3xN91BoCq8l9tTW/244Rk4mOkBGgIl8VjF+d4V5A5KKf3IWiCCEOZRraGxPnGqeIZpzoVyjDBptDpYmp1yumI9BWq5QUQS6fn+lm3lYmLdSBsW8xcjJBgAABLwfAMhXRQt6ODWuJ8rb3AYK0d3h4OHIBC7jC0TCYb/ZB+Th3/Dc4/PmLOgSvkwK+xjMAAEmCwhQnrc8rFSxGkiwnoFnEnTp0mdqlJw0DgIggwgu/08xABM+KkhGJdm9JJqMhGkyQIAATA3HxVwATuO8jyQfECiXJyYzZwzyOSilcqWEmzkP1ES6LGmDcStshjspNJAgMOwwNmBajGZXGyJVhU22quxOaR7hrahqQ52DC1jh/nj1AG0Eux3BLgu59x3SkxHO9mVLhJfcirUc2IWA96vUbvf+QkNbldCgIGCKHi6h1e/Bu1+VOiYHYAVTwBHyCfWyocoZzZovbf3ok1njzx/IltUg+GG13twMfta0gdDruLH3MOD6uaPDcI8hCAZp4/k24elmtOacGXlcPAuYe/VmnVt0ncioTyeYU+ibQRWOHyCRXEz40BDyivYWYBzQAIbTbeBUNTIZRF1QlNlVimGdfffLSPg9oJ9+vVV4H23smWSgFqrZZc0AWiTWACMXcjAhfgAqgxpXKwDXDXbZsSPjVcth6NNtZj3nzCpM1dDfPDACM+OQ9l2I1HiPlfNceentMoGLygQp5Eq3aKfYaUgOdBIB9RyYSEsmvASiFgG0RMRLEK2RAAA7"))) + using (var ms = new MemoryStream(Convert.FromBase64String(e.Value as string))) { e.Value = System.Drawing.Image.FromStream(ms); } @@ -526,6 +520,7 @@ namespace CameraCard { MainForm.LoadData(progress); progress.CloseForm(); + System.Threading.Thread.Sleep(2000); this.RunWithLoading(RefreshData); } catch (Exception ex) @@ -535,5 +530,19 @@ namespace CameraCard } }); } + + private void save_Click(object sender, EventArgs e) + { + using (var db = new MyDbContext()) + { + var student = db.Students.FirstOrDefault(o => o.IdCardNo == this.idCard.idcIdCardNoValue.Text); + if (student != null) + { + student.HasImage = true; + student.Image = this.photo.Image.ToBase64(); + db.SaveChanges(); + } + } + } } } \ No newline at end of file diff --git a/labs/CameraCard/WebApi/Controllers/TestController.cs b/labs/CameraCard/WebApi/Controllers/TestController.cs index 15cc2424..5744193b 100644 --- a/labs/CameraCard/WebApi/Controllers/TestController.cs +++ b/labs/CameraCard/WebApi/Controllers/TestController.cs @@ -47,7 +47,7 @@ namespace WebApi.Controllers Class = $"{i % 10 + 1}班", Sex = "男", Nation = "汉", - IdCardNo = $"01234567891234{i + 1}", + IdCardNo = $"22012219830118253{i + 2}", Number = $"01234567891234{i + 1}" }); }