파이썬 & 오픈소스 개발 질문과 답변 게시판

파이썬과 여러 오픈소스 기반 프레임워크 관련 질문 답변 게시판 입니다. 궁금하신 사항을 올려 주시면 빠른 시일내에 답변 드리도록 하겠습니다. 아울러, 개발 과정의 경우 간소화 시킨 문제 재현 코드나 운영일 경우 최근의 특이사항을 올려 주시면 답변 드리는 프런티어 분들이 더욱 상세한 답변을 드릴 수 있으니 많은 도움 되시길 바랍니다.

FileStream 사용 시 오류사항 문의

Lauren 2016.09.01 12:24 Views : 6257

사진 이미지를 binary 16진수 string 으로 변환하여 외부 웹서비스를 호출하고, 변환된 값을 전달하려 합니다.


visual studio 에서 디버깅 뜨면서 값을 체크하면 데이터는 나오는데........


웹서비스 호출하면 성공 리턴 값이 오는 것이 아니라


The process cannot access the file '파일경로\파일명.jpg' because it is being used by another process.


라는 메세지가 조회됩니다.




혹시 FileStream 사용을 잘 못해서 오류가 표시되는 걸까요 ? ㅠㅠ


왜 그런지 아시는 분은 알려주세요





소스는 아래와 같습니다.


namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        string empnum;
        string name;
    

        private string imageToHex(Image img)
        {
            byte[] byteArray = null;
            using (MemoryStream ms = new MemoryStream())
            {
                img.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
                ms.Seek(0, 0);
                byteArray = ms.ToArray();
            }
            string hexString = "";
            foreach (byte b in byteArray)
            {
                hexString += b.ToString("x2");
            }
            return hexString;
        }



        public Form1()
        {
            InitializeComponent();
        }

      
        public static byte[] ImageToBinary(string imagePath)
        {
            FileStream fS = new FileStream(imagePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); 
            byte[] b = new byte[fS.Length]; 
            fS.Read(b, 0, (int)fS.Length);
            fS.Close();
            return b;

        }

       
        static public string ToHex(byte[] bin_data)
        {
            string result = "";
            foreach (byte ch in bin_data)
            {
                // 2자리의 16진수로 출력
                result += string.Format("{0:x2}", ch);
            }

            return result;
        }


        private void button1_Click(object sender, EventArgs e)
        {
            Image img;

            openFileDialog1.FileName = "";
            openFileDialog1.Title = "Images";
            openFileDialog1.Filter = "All Images|*.jpg; *.jpeg";
            openFileDialog1.ShowDialog();

            string filepath = @"파일경로";

            if (System.IO.Directory.Exists(filepath))
            {
                System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(filepath);

                foreach (var item in di.GetFiles())
                {
                    pictureBox1.ImageLocation = openFileDialog1.FileName.ToString();
                    var binary = ImageToBinary(openFileDialog1.FileName.ToString());

                    string resultHex = ToHex(binary);

                  

                    //사번
                    empnum = Path.GetFileNameWithoutExtension(item.Name);
                    textBox2.Text = resultHex;
                }
            }
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void pictureBox2_Click(object sender, EventArgs e)
        {

        }
    }
}






XE Login