解码Image使用Xamarin.Android将其发送到Web服务

时间:2013-10-23 17:58:07

标签: c# android bitmap xamarin.android

我正在使用Xamarin Studio开发Android应用程序以捕获图片然后将其发送到Web服务。

步骤如下:

  1. 拍摄照片并将其存储在手机上。
  2. Web服务接收对象作为参数。该对象包含Base64中的图像。这可以通过以下方式实现:
  3. oImagenFace.ImagenDocumento =(string)Base64ToBitmapDrawableConverter.ConvertBack(BitmapFactory.DecodeFile (imagepath));

    此时我收到了Out of Memory Exception,但我无法调整图片大小(如http://developer.android.com/training/displaying-bitmaps/load-bitmap.html所述),因为我需要原始大小。图像大约是200Kb。

2 个答案:

答案 0 :(得分:0)

您是否尝试跳过BitmapFactory.DecodeFile,并将整个文件转换为Base64? SG。像这样:

oImagenFace.ImagenDocumento =(string)Base64ToBitmapDrawableConverter.ConvertBack(imagepath);

如果这样做无济于事,我会尝试按块读取文件并将其转换为Base64。

答案 1 :(得分:0)

使用Android / C#{Xamarin}

在Web服务器上上传图像
  

这只是一小段代码。它可以将任何图像从Android发送到您的网站   服务器

System.Net.WebClient Client = new System.Net.WebClient();
Client.Headers.Add("Content-Type", "binary/octet-stream");
byte[] result = Client.UploadFile("localhost/FolderName/upload.php", "POST", path);
string s = System.Text.Encoding.UTF8.GetString(result, 0, result.Length);
  

这是PHP代码{upload.php}。在中创建文件夹名称{Uploads}   你的申请。

<?php

   $uploads_dir = 'uploads/'; //Directory to save the file that comes from client application.      
   if ($_FILES["file"]["error"] == UPLOAD_ERR_OK)       
   {      
     $tmp_name = $_FILES["file"]["tmp_name"];     
     $name = $_FILES["file"]["name"];    
     move_uploaded_file($tmp_name, "$uploads_dir/$name");     
   }
?>