PictureForm.cs

简介: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.
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;
                }
            }
        }
    }
}
目录
相关文章
|
10月前
|
存储 安全 BI
【PACS源码】认识PACS的架构和工作流程
【PACS源码】认识PACS的架构和工作流程
486 0
|
安全 数据库 UED
CS与BS
CS与BS
129 0
|
C# C++ Windows
From.Designer.cs和From.cs的关系
From.Designer.cs和From.cs的关系
|
存储 编解码 数据可视化
开发pacs系统主要解决的问题有哪些?
从计算机技术角度,图像后处理功能的开发和应用影像到整个影像诊断过程。常规的影像处理是必须的,如反相、翻转、调窗、漫游、缩放、旋转、影像冻结、数字减影、标注、划线、距离及角度测量、面积测量、伪彩色等。专业的脱机测量(OFF-LINE)工具也是必要的,如在超声诊断中,提供医生超声设备的所有测量工具,并提供一些超声影像的研究方法等。三维重建技术的使用更利于临床诊断,三维重建方法有Marching Cubes、最大强度投影(MIP)、基于表面的三维显示、基于体绘制的三维显示、内表面绘制的虚拟内窥镜等方法,这些方法在医学影像领域有着广泛的应用前景。
203 0
开发pacs系统主要解决的问题有哪些?
|
安全 Java Linux
20 CS自解压木马配置详解CS
cobaltstrike的安装与基础使用 Cobalt Strike(简称CS)是一款团队作战渗透测试神器,分为客户端及服务端,一个服务端可以对应多个客户端,一个客户端可以连接多个服备端。 CS主要是用来后期持久渗透、横向移动、流量隐藏、数据窃取的工具。当已经在目标机器上执行了CS的 payload,它会创建一个Beacon(远控木马功能)回连到C2服务器。
20 CS自解压木马配置详解CS
|
机器学习/深度学习 人工智能 算法
最近发现的几个神奇CS学习网站
自己也是打算学习各种国外的优质课程(最近在学CS224n课程和做对应的project),感觉就可以参考这个北大信科大佬的路线,举例,CS61A课程,
429 0
最近发现的几个神奇CS学习网站

热门文章

最新文章