using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Drawing.Imaging;
using Packet;
namespace TSProducer
{
public partial class PictureForm : Form
{
private string gPicFilePath; //全局变量,图片文件路径
public string strPNG = "";
public string FromPngValue
{
get
{
return this.textBoxPicture.Text;
}
set
{
this.textBoxPicture.Text = value;
}
}
public event EventHandler accept;
public PictureForm()
{
InitializeComponent();
}
public PictureForm(string filePath)
{
InitializeComponent();
gPicFilePath = filePath;
showPic();
showPicContent();
setFormTitle();
}
public void showPic()
{
Image img = Image.FromFile(gPicFilePath);
pictureBox1.Image = img;
}
public void showPicContent()
{
try
{
byte[] pngBytes = ImgToBytes(gPicFilePath);
strPNG = Convert.ToBase64String(pngBytes);
textBoxPicture.Text = strPNG;
/*************************************以十六进制显示图片内容**********************************************/
//FileStream fs = new FileStream(gPicFilePath, FileMode.Open, FileAccess.Read);
//BinaryReader br = new BinaryReader(fs);
//string str = "\r\t\r\t";
//for (uint i = 0x0; i <= 0xf; i++)
//{
// str += i.ToString("x") + "\r\t";
//}
//str += "\r\n";
//UInt64 memRowIndex = 00000000; //用来标示行号
//str += memRowIndex.ToString("X08") + "h:\r\t";
//int count = 0;
//int length = (int)fs.Length;
//while (length > 0)
//{
// count++;
// byte tempByte = br.ReadByte();
// string tempStr = tempByte.ToString("X02");
// str += tempStr.ToUpper() + "\r\t";
// length--;
// if (count == 16)
// {
// memRowIndex += 0xf;
// str += "\r\n" + memRowIndex.ToString("X08") + "h:\r\t"; //每行的行头标识
// count = 0;
// }
//}
//textBoxPicture.Text = str;
//br.Close();
//fs.Close();
/***********************************************************************************/
}
catch (IOException ex)
{
throw ex;
}
}
/// <summary>
/// 设置文件标题
/// </summary>
protected void setFormTitle()
{
FileInfo fileinfo = new FileInfo(gPicFilePath);
this.Text = fileinfo.Name + " - Picture";
}
protected static byte[] ImgToBytes(string gPicFilePath)
{
MemoryStream ms = null;
try
{
ms = new MemoryStream();
Bitmap bmap = new Bitmap(gPicFilePath);
bmap.Save(ms, ImageFormat.Png);
ms.Flush();
byte[] pngBytes = ms.ToArray();
return pngBytes;
}
catch (ArgumentNullException ex)
{
throw ex;
}
finally
{
ms.Close();
}
}
public string getPngStr()
{
try
{
byte[] pngBytes = ImgToBytes(gPicFilePath);
strPNG = Convert.ToBase64String(pngBytes);
return strPNG;
}
catch (IOException ex)
{
throw ex;
}
}
/// <summary>
/// 插入图片的信息到主窗体
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnClickInsertPicBits(object sender, EventArgs e)
{
if (accept != null)
{
accept(this, EventArgs.Empty);
}
}
private void OnClickOpenPic(object sender, EventArgs e)
{
if (openPicFileDlg.ShowDialog() == DialogResult.OK)
{
gPicFilePath = openPicFileDlg.FileName;
showPic();
showPicContent();
setFormTitle();
}
}
/// <summary>
/// 测试读取保存在package中的图片
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnClickTest(object sender, EventArgs e)
{
if (openPicFileDlg.ShowDialog() == DialogResult.OK)
{
try
{
gPicFilePath = openPicFileDlg.FileName;
FileStream fs = new FileStream(gPicFilePath, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
string str = br.ReadString();
//str = str.Replace(CDT.CDTTableStr, "");
byte[] pngBytes = Convert.FromBase64String(str);
MemoryStream ImageMS = new MemoryStream();
ImageMS.Write(pngBytes, 0, pngBytes.Length);
Bitmap resultBitmap = new Bitmap(ImageMS);
pictureBox1.Image = resultBitmap;
textBoxPicture.Text = str;
}
catch (IOException ex)
{
throw ex;
}
}
}
}
}