【问题标题】:Can I send bitmap file from csharp application to android application over network stream?我可以通过网络流将位图文件从 csharp 应用程序发送到 android 应用程序吗?
【发布时间】:2020-05-20 04:57:51
【问题描述】:

我正在尝试构建一个远程桌面应用程序。好吧,我可以在 Csharp 服务器和客户端应用程序上使用 binaryformatter 序列化/反序列化成功地通过流传输位图。但我的主要目标是将位图从 PC 传输到 android 应用程序,但我找不到任何替代方法来反序列化 Android 上的流。

【问题讨论】:

  • 什么是位图文件?为什么不发送 jpg 文件?少得多的字节数。
  • 使用 csharp 中的位图,您可以使用 2 行代码获得屏幕截图,而使用位图库,您可以用更少的代码做更多的事情。

标签: c# android serialization deserialization inputstream


【解决方案1】:

是的,你可以这样做。

如果您使用的是 Android 版 Xamarin 表单,您可以使用 cSharp 将流转换为位图。

原生安卓可以试试,

HttpGet httpRequest = null;
try {
   httpRequest = new HttpGet(url.toURI());
} catch (URISyntaxException e) {
e.printStackTrace();
}

HttpClient httpclient = new DefaultHttpClient();

HttpResponse response = (HttpResponse) httpclient.execute(httpRequest);

HttpEntity entity = response.getEntity();

BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity);

InputStream instream = bufHttpEntity.getContent();

bmp = BitmapFactory.decodeStream(instream);

您可以根据自己的需要修改代码。

希望它对你有用。

【讨论】:

  • 谢谢!我对这段代码进行了一些更改,并以某种方式使它与 Chsarp 服务器和客户端一起工作。我使用了 Stream.Write()Stream.CopyTo()MemoryStream ms = new MemoryStream(); stream.CopyTo(ms); byte[] Array = ms.ToArray(); Image = ConvertByteArrrayToBitmap(Array); 但现在的问题是我需要先关闭流才能完成事务。你能帮我解决这个问题吗?
  • 在每个单身之后尝试GC.Collect(); yourfile.Flush(); yourfile.Dispose();
  • 没有。没什么区别。
猜你喜欢
  • 1970-01-01
  • 2015-12-16
  • 2020-01-21
  • 1970-01-01
  • 1970-01-01
  • 2022-08-19
  • 2015-12-27
  • 2012-08-04
  • 1970-01-01
相关资源
最近更新 更多