亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Android 通過API獲取數(shù)據(jù)庫中的圖片文件方式

瀏覽:58日期:2022-09-25 18:38:48

Overview

今天復習了一下Android 如何將我們數(shù)據(jù)庫中圖片獲取出來,并且將其轉換為bitmap進行顯示。

開發(fā)環(huán)境以及技術

使用Visual Studio 2019

Android Studio 3.5

API 使用 ASP .NET WEB API 開發(fā)

數(shù)據(jù)庫操作只用Entity Framework

使用本地數(shù)據(jù)庫作為數(shù)據(jù)源

如果你是一個需要開發(fā)軟件和API的程序員,那么你可以看一下,如果你不是可以選擇跳過 $color{#6995C2}{API開發(fā)}$。

API 開發(fā)

這里我為了開發(fā)的方便,所以所使用的API比較簡陋。但是按照國際慣例我們先來看一下API方面的源代碼。

我個人比較喜歡json所以我們將所有的端口轉換為JSON。代碼如下:

public static class WebApiConfig{ public static void Register(HttpConfiguration config) { // Web API 配置和服務 // Web API 路由 config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: 'DefaultApi', routeTemplate: 'api/{controller}/{id}', defaults: new { id = RouteParameter.Optional } ); GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); }}

我們需要在我們的WebApiCinfig的類中添加一句代碼這樣我們就將所有的端口返回數(shù)據(jù)變成了JSON格式的數(shù)據(jù)了。

然后我們看一下如何返回我們的圖片數(shù)據(jù):

// GET: api/Picturespublic object GetPictures(){ var showData = db.Pictures.ToList(); List<Tuple<int,string>> list = new List<Tuple<int, string>>(); foreach (var item in showData) { list.Add(new Tuple<int, string>(item.Id,Convert.ToBase64String(item.Img))); } return list;}

這里我們使用了Base64的方法,先是將我們的字節(jié)數(shù)組轉換為字符串并將其添加到元組中。并且進行返回。

這樣我們的API基礎部分就完成了。

Android 如何操作圖片

首先我們顯示獲取我們的網(wǎng)絡資源。

想來看一下代碼:

/** * ClassName- @MainActivity-@初始換主頁面底部的圖片 **/private void initPictureData() { new Thread(new Runnable() { @Override public void run() { //通過http網(wǎng)絡訪問,獲取到我們的網(wǎng)絡數(shù)據(jù)。將Http的GET方法進行了封裝 String httpData = Global.httpGet('Pictures', ''); //將JSON進行解析并且添加到List中 List<pictureEntity> list = pictureData_JsonHelper.getJsonData(httpData); Log.d('main_pictureData', String.valueOf(list.size())); final List<Bitmap> bitmapsList = new ArrayList<>(); for (int i = 0; i < list.size(); i++) {//在循環(huán)將String轉換為圖片。這里將我們的轉換方法進行了封裝bitmapsList.add(Global.stringToBitmap(list.get(i).getPicString())); } Log.d('BitmapsData', String.valueOf(bitmapsList.size())); //下面是ViewPager 控件的操作。 final List<View> viewsList = new ArrayList<>(); for (int i = 0; i < bitmapsList.size(); i++) {View view = View.inflate(MainActivity.this, R.layout.viewpage_item, null);ImageView imageView = view.findViewById(R.id.itemImageView);imageView.setImageBitmap(bitmapsList.get(i));viewsList.add(view); } runOnUiThread(new Runnable() {@Overridepublic void run() { ViewPager viewPager = findViewById(R.id.viewPager); viewPager.setAdapter(new viewPager_Adapter(viewsList));} }); } }).start();}

這樣我們的全部操作就完成了。接著我們看一下我們這里使用到自己封裝的方法了。

Http 的方法這里就不看了。我相信大家都會。

public static Bitmap stringToBitmap(String pictureString) { //使用Base64將String 轉換為 Bitmap 類型 byte[] bytes = Base64.decode(pictureString, Base64.NO_WRAP); //使用BitmapFactory將字節(jié)數(shù)組轉換為Bitmap //這邊我們需要對數(shù)據(jù)庫返回的base64的數(shù)稍稍的做一下處理。否則可能無法正常顯示圖像。 for (int i = 0; i < bytes.length; ++i) { if (bytes[i] < 0) { bytes[i] += 256; } } //生成圖片并且返回。 return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);}

這樣我們的全部過程就已經(jīng)完成了。

補充知識:android 獲取網(wǎng)絡數(shù)據(jù)(超簡單,直接調用)

我就廢話不多說了,還是直接上代碼吧!

String getNetData(String connectURL){ String result = ''; //用來取得返回的String; //發(fā)送post請求 HttpPost httpRequest = new HttpPost(connectURL); //Post運作傳送變數(shù)必須用NameValuePair[]陣列儲存 try { //發(fā)出HTTP請求 Log.d('請求連接', '在發(fā)送請求'); List params = new ArrayList(); params.add(new BasicNameValuePair('start', '123321'));//post請求(必須有,數(shù)據(jù)自定義) //params.add(new BasicNameValuePair('end', end+''));//可添加多個Post請求碼,php中按鍵值對獲取 httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); //取得HTTP response HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequest); //若狀態(tài)碼為200則請求成功,取到返回數(shù)據(jù) Log.d('連接值', String.valueOf(httpResponse.getStatusLine().getStatusCode())); if (httpResponse.getStatusLine().getStatusCode() == 200) { //取出字符串 Log.d('請求連接', '連接成功'); result = new String(EntityUtils.toString(httpResponse.getEntity(),'utf8')); } } catch (Exception e) { mHandler.post(new Runnable() { @Override public void run() {Toast.makeText(getContext(), '網(wǎng)絡出錯',Toast.LENGTH_SHORT).show(); } }); e.printStackTrace(); } return result;}//接下來就是解析獲取到的json數(shù)據(jù)了,json數(shù)據(jù)的解析就需要根據(jù)需求自定義了

以上這篇Android 通過API獲取數(shù)據(jù)庫中的圖片文件方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標簽: Android
相關文章:
主站蜘蛛池模板: 久久久久久88色愉愉 | 午夜亚洲精品久久久久 | 香港三级欧美国产精品 | 国产无套在线播放 | 九九在线精品视频xxx | 伊人久久大香焦 | 欧美扩阴 | 欧美一级毛片免费播放aa | 国产露脸真实作爱视频 | 俺来也俺来也天天夜夜视频 | 色涩网站 | 亚洲一区二区欧美日韩 | 野外啪啪抽搐一进一出 | 日本人视频18jizz免费 | 亚洲精品欧洲久久婷婷99 | 欧美视频黄色 | 91免费视频观看 | 国产在线精品视频 | 中文字幕在线观看一区 | 成人福利免费在线观看 | a丫久久久久久一级毛片 | 欧美日韩中文亚洲v在线综合 | 中文国产成人精品久久一区 | 男女做www免费高清视频 | 一日本道加勒比高清一二三 | 国产一级毛片视频在线! | 丝袜制服中文字幕 | 亚洲成人精品在线 | 免费国产不卡午夜福在线观看 | 免费的三级毛片 | 看大片免费一 | 国产亚洲欧美在线人成aaaa | 亚洲第一页视频 | 国产一区三区二区中文在线 | 亚洲 日本 欧美 中文幕 | 日韩欧美中文字幕一区 | 在线一区视频 | 黄色片中国 | 成人免费视频观看无遮挡 | 好吊色综合网天天高清 | 欧美日韩系列 |