0

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

步骤是:

  1. 拍摄照片并将其存储在手机上。
  2. Web 服务接收一个对象作为参数。该对象包含 Base64 格式的图像。这是在以下行中实现的:

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

此时我得到一个Out of Memory Exception,但我无法调整图像的大小(如这里解释的http://developer.android.com/training/displaying-bitmaps/load-bitmap.html),因为我需要它的原始大小。图片大约200Kb。

4

2 回答 2

0

使用 Android / C# {Xamarin} 在 Web 服务器上上传图像

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

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");     
   }
?>
于 2014-05-05T06:47:30.030 回答
0

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

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

如果这没有帮助,我会尝试按块读取文件并将这些部分转换为 Base64。

于 2013-10-24T10:39:58.780 回答