Android客户端 和 服务器 的图片传输技术
Android客户端 和 服务器 的图片传输技术
写在前面
今天我们来看看如何处理Android
客户端到Web API
后端的图片的一些处理方法。
我比较常用的在两者间处理图片的几种方式
Android
发送图片to Base64
图片数据,Web API
端进行数据转码成图片并保存到本地。Android
发送图片to Base64
图片数据,Web API
端进行数据转码成二进制形式存储到数据库。Web API
直接发送图片名称,Android
客户端通过网络方式加载图片(将图片的URL
地址读取成InputStream
再将其转换为Bitmap
)Web API
从数据库中读取图片二进制文件,并通过Base64
编码变成字符串数据,从而将其返回到客户端,客户端对他进行Base64
转Bitmap
的操作。
以上大概就是我对于服务端和客户端图片操作的全部方法了。
因为后服务端转码网上一搜一堆,这里就不详细说明了。
方法一:Web API 将Base64文件转码成图片并存储到本地
-
将图片在
Android
客户端将Bitamp
转换为Base64编码
文件并且通过Post
方法进行传输,但是需要注意的是 : )。就是每次在Post
传输文件时如果是传输的数据过大会导致Post
请求失败。 -
其次就是对于
Web API
服务端的操作了。首先,我们在Web API
获取相对应的存储文件的文件夹路径。string path = System.Web.Hosting.HostingEnvironment.MapPath($@"/Images/");
如何代码就是用于获取
Web API
所在服务器的相对路径了,并且存放在Images
文件夹。 -
如何存储将要存储文件的名称的问题:
string fileName = Guid.NewGuid().ToString();
这里我们使用的是
Guid
的方式去获取全局的唯一名称。 -
如何通过流的形式去写入文件:
FileStream fileStream = new FileStream(path + fileName + ".jpg", FileMode.Create, FileAccess.Write);
先是创建一个
FileStream
并且设置文件类型为FileModel.Create
设置操作为FileAccess.Write
.并且将存储图片的
Base64
文件转换为字节数组的形式。以及通过FileStream.Write
的方式去写入数据。
这样,从Android客户端传输到Web API
并进行存储的操作也就完成了。
方法:Android 通过图片的网络地址进行图片的读取
Android
如何读取网络图片,其实就是通过Get
方法去获取。
Bitmap mBitmap = BitmapFactory.decodeStream(new URL(address).openStream());
这里的address
就是我们的网络图片的地址。但是他也是通过Get
方法去获取,所以也是需要使用多线程来获取数据。