Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用EXIF数据将图像上载到服务器_C#_Image_Windows Phone 8_Exif - Fatal编程技术网

C# 使用EXIF数据将图像上载到服务器

C# 使用EXIF数据将图像上载到服务器,c#,image,windows-phone-8,exif,C#,Image,Windows Phone 8,Exif,我没有试图读取设备或服务器上的EXIF数据,但数据需要存在于服务器上 我目前正在通过将图像转换为字节[],然后转换为base64Convert.ToBase64(字节[])并使用JSON发送图像到服务器-请参阅下面的代码 但是当我在另一端得到文件时,它没有任何EXIF数据。如果我用伪造的SD卡从模拟器上获取图像,那么EXIF数据就存在 有人知道如何上传图像,然后在另一端重建图像,以便EXIF数据保持完整吗 镜像到字节到base64到JSON BitmapImage image = new Bit

我没有试图读取设备或服务器上的EXIF数据,但数据需要存在于服务器上

我目前正在通过将图像转换为
字节[]
,然后转换为base64
Convert.ToBase64(字节[])
并使用JSON发送图像到服务器-请参阅下面的代码

但是当我在另一端得到文件时,它没有任何EXIF数据。如果我用伪造的SD卡从模拟器上获取图像,那么EXIF数据就存在

有人知道如何上传图像,然后在另一端重建图像,以便EXIF数据保持完整吗

镜像到字节到base64到JSON

BitmapImage image = new BitmapImage();
image.SetSource(e.ChosenPhoto);
image = ResizeImage(image);
byte[] imageBytes;
using (MemoryStream ms = new MemoryStream())
{
    WriteableBitmap btmMap = new WriteableBitmap(image);
    System.Windows.Media.Imaging.Extensions.SaveJpeg(btmMap, ms, image.PixelWidth, Image.PixelHeight, 0, 100);
    image = null;
    imageBytes = ms.ToArray();
 }
 Base64Image imagestring = new Base64Image();
 imagestring.imagestring = Convert.ToBase64String(imageBytes);
 string json = JsonConvert.SerializeObject(imagestring);
JSON到base64到byte[]到image

using (StreamReader sr = new StreamReader(inputStream))
{
    postData = sr.ReadToEnd();
}
JavaScriptSerializer deserializer = new JavaScriptSerializer();
Dictionary<string, object> jsonObjects = (Dictionary<string, object>)deserializer.DeserializeObject(postData);
string base64image = jsonObjects["imagestring"].ToString();
byte[] imagebytes = Convert.FromBase64String(base64image);
BitmapImage bitmapImage = new BitmapImage();
MemoryStream ms = new MemoryStream(imagebytes);
bitmapImage.BeginInit();
bitmapImage.CacheOption = BitmapCacheOption.OnDemand;
bitmapImage.CreateOptions = BitmapCreateOptions.None;
bitmapImage.Rotation = Rotation.Rotate0;
bitmapImage.StreamSource = ms;
bitmapImage.EndInit();
bitmapImage.CreateOptions = BitmapCreateOptions.None;
WriteableBitmap wBmp = new WriteableBitmap(bitmapImage);
var encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(wBmp));
使用(StreamReader sr=新的StreamReader(inputStream))
{
postData=sr.ReadToEnd();
}
JavaScriptSerializer反序列化程序=新的JavaScriptSerializer();
字典jsonObjects=(字典)反序列化器。反序列化对象(postData);
string base64image=jsonObjects[“imagestring”].ToString();
byte[]imagebytes=Convert.FromBase64String(base64image);
BitmapImage BitmapImage=新的BitmapImage();
MemoryStream ms=新的MemoryStream(imagebytes);
bitmapImage.BeginInit();
bitmapImage.CacheOption=BitmapCacheOption.OnDemand;
bitmapImage.CreateOptions=BitmapCreateOptions.None;
bitmapImage.Rotation=Rotation.Rotate0;
bitmapImage.StreamSource=ms;
bitmapImage.EndInit();
bitmapImage.CreateOptions=BitmapCreateOptions.None;
WriteableBitmap wBmp=新的WriteableBitmap(位图图像);
var encoder=新的JpegBitmapEncoder();
Add(BitmapFrame.Create(wBmp));

我必须完全更改我的代码以切断与位图或其他格式的任何连接,只需通过它使用
byte[]
。见代码:

在应用程序上:

ImageData imagedata = new ImageData();
byte[] imagebytes = new byte[e.ChosenPhoto.Length];
e.ChosenPhoto.Read(imagebytes, 0, int.Parse(e.ChosenPhoto.Length.ToString()));
imagedata.imagestring = Convert.ToBase64String(imagebytes);
string json = JsonConvert.SerializeObject(imagedata);
在服务器上:

JavaScriptSerializer deserializer = new JavaScriptSerializer();
deserializer.MaxJsonLength = 50000000;
Dictionary<string, object> jsonObjects = (Dictionary<string, object>)deserializer.DeserializeObject(postData);
string base64image = jsonObjects["imagestring"].ToString();              
byte[] imagebytes = Convert.FromBase64String(base64image);
Guid imagename = Guid.NewGuid();
if (!Directory.Exists(EM.ImagePath))
   Directory.CreateDirectory(EM.ImagePath);
using (FileStream sw = new FileStream(EM.ImagePath + imagename + ".jpg", FileMode.CreateNew))
{
   sw.Write(imagebytes, 0, imagebytes.Length);
}
JavaScriptSerializer反序列化程序=新建JavaScriptSerializer();
deserializer.MaxJsonLength=50000000;
字典jsonObjects=(字典)反序列化器。反序列化对象(postData);
string base64image=jsonObjects[“imagestring”].ToString();
byte[]imagebytes=Convert.FromBase64String(base64image);
Guid imagename=Guid.NewGuid();
如果(!Directory.Exists(EM.ImagePath))
Directory.CreateDirectory(EM.ImagePath);
使用(FileStream sw=newfilestream(EM.ImagePath+imagename+“.jpg”,FileMode.CreateNew))
{
sw.Write(imagebytes,0,imagebytes.Length);
}

我已编辑了您的标题。请参阅“”,其中的共识是“不,他们不应该”。