사진 이미지를 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)
{
}
}
}