나는 사진을 찍어서 wcf 서비스로 보내어 다른 응용 프로그램 (windows forms app)이 데이터베이스로 보낼 수 있도록합니다. 데이터베이스를 확인하고 이미지를 얻으십시오.windows phone에서 얻은 이미지를 aC# picturebox 이미지로 전송하는 방법
데이터를 데이터베이스에 바이트 배열로 추가하지만 값을 확인하면 모두 동일한 숫자가 표시되지만 데이터가 있기 때문에 작동하는 것 같습니다.
데이터를 이미지로 변환하려고 시도하면 매개 변수가 유효하지 않다는 예외가 발생합니다. 나는 이것을 수행하는 방법을 찾았지 만 (심지어 여기서도) 내가 무엇을하는지 정확하게 말하고있다. 그래서 나는 무엇이 잘못되었는지 확신하지 못한다.
public void AddImage(byte[] array)
{
var con =
new MySqlConnection(
"server=instance11297.db.xeround.com;User Id=Admin;Password=nomoredrama2010;port=7692;database=capstone");
con.Open();
string h = array.Aggregate(h, (current, b) => current + b);
string text = "INSERT INTO images VALUES (''," + h + ")";
Console.WriteLine(text);
var command = new MySqlCommand(text, con);
var result = command.ExecuteReader();
result.Close();
}
그것은 그렇지 않은 점에 유의하는 것이 좋다 :
if (e.TaskResult == TaskResult.OK)
{
var bitImage = new BitmapImage();
bitImage.SetSource(e.ChosenPhoto);
//image is a Image Control in the form
ImageServiceClient client = new ImageServiceClient();
byte[] array;
using(var stream = new MemoryStream())
{
var btmMap = new WriteableBitmap(bitImage.PixelWidth, bitImage.PixelHeight);
// write an image into the stream
btmMap.SaveJpeg(stream, bitImage.PixelWidth, bitImage.PixelHeight, 0, 100);
array = stream.ToArray();
}
client.AddImageAsync(array);
}
마지막 줄처럼 보이는 내 WCF 서비스에서 add 메소드 호출
여기에 Windows Phone 용 내 코드입니다 배열에 전달 된 배열을 직접 사용하거나 텍스트로 변환하면 데이터베이스에 같은 내용이 표시됩니다. "VAR 이미지 = Image.FromStream (새 MemoryStream을 (g));"
var con =
new MySqlConnection(
"server=instance11297.db.xeround.com;User Id=Admin;Password=nomoredrama2010;port=7692;database=capstone");
con.Open();
string h = "";
string text = "select Image from images where ImageId=4";
var command = new MySqlCommand(text, con);
var dr = command.ExecuteReader();
var g = new byte[] {};
if(dr.Read())
g = (byte[])dr[0];
dr.Close();
var image = Image.FromStream(new MemoryStream(g));
pictureBox1.Image = image;
하지만 항상에 나누기 :
그리고 마지막으로,이 모든 것을 보내는 응용 프로그램에서,이가 매개 변수가 유효하지 않음을 나타냅니다.
내가 왜 완전히 내 이미지의 배열을 무시하고 그것을 대체는 이미지를 얻을 수 있지만, 데이터베이스의 하나는 65 바이트이고 그들은 모두 57
말을 일단 큰 배열을 가지고 발견 57 바이트 중 65 바이트 하나?
내가 뭘 잘못하고 있니?
** * ** * ** * ** * ***편집* ** * ** * ** * ** * ** * ** * ** * ** * **** 내가 마지막으로 WCF 응용 프로그램에 디버거를 활성화 한 후 잘못 무엇을 발견
. http://www.codeproject.com/Articles/9686/Save-An-Image-Into-SQL-Server-2000-Database
는 이유가 "당신의 SQL이 잘못"유형의 오류를 던지고 참조하고 추가 방법을 사용하는 내 SQL 문을 변경 : http://msdn.microsoft.com/en-us/library/ff649234.aspx은 (모르는 사람들을 위해)
나는 여기 보았다 값을 문자열에 넣는 대신.
마지막으로 수정했습니다.
public void AddImage(byte[] array)
{
var con =
new MySqlConnection("server=instance11297.db.xeround.com;User Id=Admin;Password=nomoredrama2010;port=7692;database=capstone");
con.Open();
string text = "INSERT INTO images (ImageId, Image) VALUES ('',@bytes)";
var command = new MySqlCommand(text, con);
command.Parameters.AddWithValue("@bytes", array);
command.ExecuteNonQuery();
con.Close();
}
마침내 벽에 머리를 때리고 중지 할 수 있습니다 :이 다른 nayone이 문제를 우연히 만나는 것처럼 작동 코드가 보인다. :)