我有一個Windows Phone的應用程序,拍照,並將其發送給它發送到數據庫的WCF服務,以便其他應用程序(Windows窗體應用程序)可以檢查數據庫並獲取圖像。如何傳輸從Windows手機獲得AC#PictureBox的圖像的圖像
它是將數據添加到數據庫中的字節數組,但是當我檢查的價值觀,他們都說着同樣的數字,但現在看來,這工作,因爲他們的數據在那裏。
當我試圖把這些數據轉化爲圖像,雖然,它拋出一個異常,稱該參數是無效的。我搜索瞭如何做到這一點,但我覺得(即使在這裏)說我在做什麼。所以我不確定有什麼問題。
這裏是我爲Windows Phone代碼:
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方法,它看起來像:
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();
}
這是很好的注意,它不沒關係,如果我直接使用數組傳遞的,或者如果我把它變成文字,他們都出現在數據庫中的相同。
後來終於,在這個正在發送的一切應用程序,我有這樣的:
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;
但它總是打破的 「VAR圖像= Image.FromStream(新的MemoryStream(G));」說該參數是無效的。
我發現它有一個大陣一旦獲得圖像,但在一個數據庫中只有65個字節,他們都說57
爲什麼完全無視我的形象的陣列,並用替換它全部57個字節中有65個字節?
我在做什麼錯?
** * ** * ** * ** * ***編輯* ** * ** * ** * ** * ** * ** * ** * ** * ****
我終於找到了一個WCF應用中啓用調試後錯。 http://msdn.microsoft.com/en-us/library/ff649234.aspx(對於那些不知道是誰)
我也看了這裏:http://www.codeproject.com/Articles/9686/Save-An-Image-Into-SQL-Server-2000-Database
,看看它爲什麼被拋出一個「你的SQL是錯誤的」錯誤類型和改變了我的sql語句使用添加方法而不是將值放入字符串中。
問題解決了最後。工作代碼看起來像這樣nayone其他遇到這個問題:
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();
}
我終於可以停止打我的頭撞牆。 :)