我有一个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();
}
我终于可以停止打我的头撞墙。 :)