안녕하세요 선배님.
1. OpenFileDialog를 이용하여 a.png 파일의 경로 취득
2. 취득한 경로로 Image객체 취득
3. File.ReadAllBytes와 취득한 경로를 이용하여 byte[] 취득 -- a
4. MemoryStream과 Image객체를 이용하여 byte[] 취득 -- b
위와 같은 과정을 거쳐 a,b라는 2개의 byte[]을 취득 하였습니다.
동일한 이미지 파일을 이용하여 취득한 것이기 때문에 2개의 배열의 길이는 같게 나올줄 알았지만
Console로 찍어보니 서로 길이가 다르게 나옵니다.
혹시 이와같은 증상의 이유와 더불어 동일한 byte[]를 취득하는 방법에 대해 알려주시면 감사 하겠습니다 .^^
아래 예제 코드는 실제 길이 값을 비교했던 코드 입니다.
// 이미지 불러오기
private void button_file_Click(object sender, EventArgs e) {
OpenFileDialog of = new OpenFileDialog();
of.Filter = "png 파일(*.png)|*.png";
if (of.ShowDialog() == DialogResult.OK) {
// 선택한 파일의 크기: 113KB (116,090 바이트)
// 선택한 파일을 Image로 변환
System.Drawing.Image img = Image.FromFile(of.FileName);
// byte배열로 변환시 크기 비교
byte[] b1 = File.ReadAllBytes(of.FileName);
byte[] b2 = imageToByteArray(img);
Console.WriteLine(b1.Length); // 결과: 116,090
Console.WriteLine(b2.Length); // 결과: 129,770
}
}
// Image -> byte[]
private byte[] imageToByteArray(System.Drawing.Image image) {
System.IO.MemoryStream ms = null;
byte[] data = null;
try {
ms = new MemoryStream();
image.Save(ms, image.RawFormat);
data = ms.ToArray();
} catch (Exception e) {
Console.WriteLine(e);
} finally {
if (ms != null) {
ms.Close();
}
}
return data;
}
[최초 등록일: ]
[최종 수정일: 12/13/2016]