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;
}
}
}
}
} 本文转自静默虚空博客园博客,原文链接:http://www.cnblogs.com/jingmoxukong/archive/2011/07/29/2120872.html,如需转载请自行联系原作者