ukladanie roznych typov nacitanych suborov ako jpg

This commit is contained in:
Culak-HP\Culak
2020-11-08 19:43:44 +01:00
parent 31323587ee
commit 6f3c43b792
7 changed files with 170 additions and 90 deletions

View File

@@ -8,6 +8,9 @@ using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using Syncfusion.Pdf.Parsing;
using System.Drawing.Imaging;
namespace Mip
{
@@ -53,6 +56,8 @@ namespace Mip
pomocnaDT.Columns.Add("Velkost_suboru",typeof (string));
pomocnaDT.Columns.Add("Typ_suboru", typeof(string));
pomocnaDT.Columns.Add("Cesta",typeof (string));
pomocnaDT.Columns.Add("Data", typeof(string));
pomocnaDT.Columns.Add("Valid", typeof(int));
VypisSpojenyRozmer();
classGlobal.FillCB(comboBox2, "tabpomocnychudajov", "Hodnota", "Kategoria", "Pridať iný názov");
@@ -60,16 +65,13 @@ namespace Mip
private void btnAddVykres_Click(object sender, EventArgs e)
{
openFileDialog1.Multiselect = true;
openFileDialog1.DefaultExt = "jpg";
openFileDialog1.Filter = "Obrázky (*.BMP;*.JPG;*.JPEG;*.GIF;*.PNG;*.EXIF;*.TIFF)|*.BMP;*.JPG;*.JPEG;*.GIF;*.PNG;*.EXIF;*.TIFF|" +
"Pdf súbory (*.pdf)|*.pdf";
openFileDialog1.Filter = "Obrázky (*.BMP;*.JPG;*.JPEG;*.GIF;*.PNG;*.EXIF;*.TIFF)|*.BMP;*.JPG;*.JPEG;*.GIF;*.PNG;*.EXIF;*.TIFF|" + "Pdf súbory (*.pdf)|*.pdf";
openFileDialog1.FilterIndex = 1;
openFileDialog1.FileName = "";
openFileDialog1.ShowDialog();
if (openFileDialog1.FileNames != null && openFileDialog1.FileName != "")
{
foreach (string Cesta in openFileDialog1.FileNames)
@@ -84,45 +86,72 @@ namespace Mip
{
FileStream fileStream;
fileStream = new FileStream(Cesta, FileMode.Open, FileAccess.Read);
//char[] help = new char[Cesta.Length - Cesta.LastIndexOf("\\") - 1];
var fileSize = (int)fileStream.Length;
var VykresData = new byte[fileSize];
fileStream.Read(VykresData, 0, fileSize);
//Cesta.CopyTo(Cesta.LastIndexOf("\\") + 1, help, 0, (help.Length));
//string hlp = new string(help);
var FileNameStart = Cesta.LastIndexOf("\\") + 1;
var FileName = Cesta.Substring(FileNameStart, Cesta.Length - FileNameStart);
var ExtensionStart = Cesta.LastIndexOf(".") + 1;
var Extension = Cesta.Substring(ExtensionStart, Cesta.Length - ExtensionStart);
pomocnaDT.Rows.Add(FileName, Cesta.Length.ToString(), Extension, Cesta);
pomocnaDT.Rows.Add(FileName, Cesta.Length.ToString(), Extension, Cesta, VykresData.ToString(), Convert.ToInt32(IsFileValid(VykresData, Extension)));
dataGridView1.DataSource = pomocnaDT;
dataGridView1.AutoResizeColumns();
dataGridView1.AutoResizeRows();
StyleGridView();
dataGridView1.Rows[dataGridView1.Rows.Count - 1].Selected = true;
obrazok_Refresh(dataGridView1.Rows.Count - 1);
if (dataGridView1.Rows.Count > 4) dataGridView1.FirstDisplayedScrollingRowIndex = dataGridView1.Rows.Count - 4;
if (dataGridView1.Rows.Count > 5) dataGridView1.FirstDisplayedScrollingRowIndex = dataGridView1.Rows.Count - 5;
}
else
{
MessageBox.Show("Súbor: " + Cesta + "\n už v zozname figuruje!", "Upozornenie ...", MessageBoxButtons.OK, MessageBoxIcon.Warning);
//MessageBox.Show(
}
pictureBox1.Visible = true;
}
}
if (textBox6.Text != "" && textBox2.Text != "" && textBox3.Text != "" && textBox4.Text != "" && dataGridView1.Rows.Count != 0) button5.Enabled = true;
else button5.Enabled = false; //kontrola naplnenia povinných dát
}
private void StyleGridView()
{
dataGridView1.Columns["Data"].Visible = false;
dataGridView1.AutoResizeColumns();
dataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dataGridView1.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dataGridView1.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dataGridView1.Columns[3].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
dataGridView1.Columns[5].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dataGridView1.AutoResizeRows();
}
private bool IsFileValid(byte[] vykresData, string extension)
{
try
{
switch (extension)
{
case "pdf":
PdfLoadedDocument loadedDocument = new PdfLoadedDocument(vykresData);
Bitmap pdfToJpeg = loadedDocument.ExportAsImage(0);
loadedDocument.Close(true);
return true;
default:
var memoryStream = new MemoryStream(vykresData);
Bitmap image = new Bitmap(memoryStream);
return true;
}
}
catch (Exception)
{
//MessageBox.Show($"Súbor '{Cesta}' nie je obrázok ani pdf");
return false;
}
}
private void btnVymazVykres_Click(object sender, EventArgs e)
{
@@ -181,33 +210,42 @@ namespace Mip
dRow = pomocnaDT.Rows[index];
var isPdf = dRow["Typ_suboru"].ToString() == "pdf";
var isValid = dRow["Valid"].ToString() == "1";
if (isPdf)
if(isValid)
{
FileStream pdfFileStream = new FileStream(dRow["Cesta"].ToString(), FileMode.Open, FileAccess.Read);
pictureBox1.Visible = false;
pdfDocumentView1.Visible = true;
pdfDocumentView1.Load(pdfFileStream);
pdfDocumentView1.ZoomMode = Syncfusion.Windows.Forms.PdfViewer.ZoomMode.FitWidth;
pdfDocumentView1.Dock = DockStyle.Fill;
if (isPdf)
{
FileStream pdfFileStream = new FileStream(dRow["Cesta"].ToString(), FileMode.Open, FileAccess.Read);
pictureBox1.Visible = false;
pdfDocumentView1.Visible = true;
pdfDocumentView1.Load(pdfFileStream);
pdfDocumentView1.ZoomMode = Syncfusion.Windows.Forms.PdfViewer.ZoomMode.FitWidth;
pdfDocumentView1.Dock = DockStyle.Fill;
}
else
{
fs = new FileStream(dRow["Cesta"].ToString(), FileMode.Open, FileAccess.Read);
fileSize = (int)fs.Length;
fileData = new byte[fileSize];
fs.Read(fileData, 0, fileSize);
fs.Close();
Bitmap obrazok;
//using (MemoryStream stream = new MemoryStream(fileData)) obrazok = new Bitmap(stream);
MemoryStream stream = new MemoryStream(fileData);
obrazok = new Bitmap(stream);
pictureBox1.Visible = true;
pictureBox1.Image = obrazok;
pictureBox1.Height = obrazok.Height;
pictureBox1.Width = obrazok.Width;
sizeH = pictureBox1.Image.Size.Height;
sizeW = pictureBox1.Image.Size.Width;
pdfDocumentView1.Visible = false;
}
}
else
{
fs = new FileStream(dRow["Cesta"].ToString(), FileMode.Open, FileAccess.Read);
fileSize = (int)fs.Length;
fileData = new byte[fileSize];
fs.Read(fileData, 0, fileSize);
fs.Close();
Bitmap obrazok;
//using (MemoryStream stream = new MemoryStream(fileData)) obrazok = new Bitmap(stream);
MemoryStream stream = new MemoryStream(fileData);
obrazok = new Bitmap(stream);
pictureBox1.Visible = true;
pictureBox1.Image = obrazok;
pictureBox1.Height = obrazok.Height;
pictureBox1.Width = obrazok.Width;
sizeH = pictureBox1.Image.Size.Height;
sizeW = pictureBox1.Image.Size.Width;
pictureBox1.Visible = false;
pdfDocumentView1.Visible = false;
}
@@ -501,13 +539,44 @@ namespace Mip
byte[] VykresData;
dtrw=pomocnaDT.Rows[p1];
fs = new FileStream(dtrw["Cesta"].ToString(), FileMode.Open, FileAccess.Read);
fileSize = (int)fs.Length;
VykresData = new byte[fileSize];
fs.Read(VykresData, 0, fileSize);
fs.Close();
var isValid = dtrw["Valid"].ToString() == "1";
classSQL.SaveVykresToSQL(IDVyrobok, p1 + 1, VykresData);
if(isValid)
{
fs = new FileStream(dtrw["Cesta"].ToString(), FileMode.Open, FileAccess.Read);
fileSize = (int)fs.Length;
VykresData = new byte[fileSize];
fs.Read(VykresData, 0, fileSize);
var fileToSave = new byte[fileSize];
switch (dtrw["Typ_suboru"].ToString())
{
case "pdf":
PdfLoadedDocument loadedDocument = new PdfLoadedDocument(VykresData);
Bitmap pdfToJpeg = loadedDocument.ExportAsImage(0);
loadedDocument.Close(true);
fileToSave = SaveAsJpeg(pdfToJpeg);
break;
case "jpg":
fileToSave = VykresData;
break;
default:
Bitmap imageToJpeg = new Bitmap(fs);
fileToSave = SaveAsJpeg(imageToJpeg);
break;
}
fs.Close();
classSQL.SaveVykresToSQL(IDVyrobok, p1 + 1, fileToSave);
}
else
{
MessageBox.Show($"Výkres '{dtrw["Cesta"]}' nie je validný obrázok alebo pdf! {Environment.NewLine} Preto nebol uložený do databázy.");
}
}
MessageBox.Show("Výrobok úspešne pridaný!");
@@ -520,6 +589,17 @@ namespace Mip
}
private byte[] SaveAsJpeg(Bitmap image)
{
byte[] returnImageData;
using (var stream = new MemoryStream())
{
image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
returnImageData = stream.ToArray();
}
return returnImageData;
}
private void textBox6_TextChanged(object sender, EventArgs e)
{