日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

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

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

Overview

今天復(fù)習(xí)了一下Android 如何將我們數(shù)據(jù)庫(kù)中圖片獲取出來(lái),并且將其轉(zhuǎn)換為bitmap進(jìn)行顯示。

開(kāi)發(fā)環(huán)境以及技術(shù)

使用Visual Studio 2019

Android Studio 3.5

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

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

使用本地?cái)?shù)據(jù)庫(kù)作為數(shù)據(jù)源

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

API 開(kāi)發(fā)

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

我個(gè)人比較喜歡json所以我們將所有的端口轉(zhuǎn)換為JSON。代碼如下:

public static class WebApiConfig{ public static void Register(HttpConfiguration config) { // Web API 配置和服務(wù) // 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的類中添加一句代碼這樣我們就將所有的端口返回?cái)?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ù)組轉(zhuǎn)換為字符串并將其添加到元組中。并且進(jìn)行返回。

這樣我們的API基礎(chǔ)部分就完成了。

Android 如何操作圖片

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

想來(lái)看一下代碼:

/** * ClassName- @MainActivity-@初始換主頁(yè)面底部的圖片 **/private void initPictureData() { new Thread(new Runnable() { @Override public void run() { //通過(guò)http網(wǎng)絡(luò)訪問(wèn),獲取到我們的網(wǎng)絡(luò)數(shù)據(jù)。將Http的GET方法進(jìn)行了封裝 String httpData = Global.httpGet('Pictures', ''); //將JSON進(jìn)行解析并且添加到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轉(zhuǎn)換為圖片。這里將我們的轉(zhuǎn)換方法進(jìn)行了封裝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 的方法這里就不看了。我相信大家都會(huì)。

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

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

補(bǔ)充知識(shí):android 獲取網(wǎng)絡(luò)數(shù)據(jù)(超簡(jiǎn)單,直接調(diào)用)

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

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

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

標(biāo)簽: Android
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
免费视频最近日韩| 久久免费精品| 久久精品卡一| 91看片一区| 国产高潮在线| 国产suv精品一区| 高清av一区| 国产中文在线播放| 日韩三区在线| 好吊视频一区二区三区四区| 国产99久久久国产精品成人免费| | 日韩国产一区二区| 国产精品综合| 国产成人精品999在线观看| 中文在线а√天堂| 欧美日韩中文字幕一区二区三区| 国产精品毛片在线看| 视频一区二区国产| 国产乱码精品一区二区三区四区 | 亚洲欧美日本国产专区一区| 蜜臀久久99精品久久久画质超高清 | 久久黄色影视| 日韩欧美不卡| 日韩一区精品| 高清久久一区| 日本aⅴ免费视频一区二区三区| 国产a亚洲精品| 免费中文字幕日韩欧美| 你懂的国产精品| 婷婷综合网站| 国产精品免费精品自在线观看| 久草精品视频| 欧美日韩国产一区精品一区| 日韩精品免费视频人成| 久久在线91| 欧美成人国产| 国产精品第一国产精品| 欧美在线亚洲| 高清在线一区| 日韩精品一级| 日韩视频在线一区二区三区 | 久久久成人网| 欧美精品中文字幕亚洲专区| 91精品国产成人观看| 国产精品亚洲综合久久| 99精品99| 蜜桃成人av| 久久精品不卡| 岛国av免费在线观看| 国产精品天堂蜜av在线播放| 日本va欧美va欧美va精品| 国产色综合网| 不卡中文字幕| 久久91导航| 欧美aa在线观看| 日韩欧美三级| 日韩av在线播放网址| 国产精品亚洲产品| 91成人精品观看| 欧美亚洲综合视频| 日韩福利视频网| 日韩欧美在线精品| 亚洲精品女人| 91欧美日韩在线| 欧美欧美黄在线二区| 欧美久久一区二区三区| 国产探花在线精品| 国产精品**亚洲精品| 精品中文字幕一区二区三区| 精品国产亚洲一区二区三区在线 | 日韩和的一区二在线| 人人精品亚洲| 国产精品免费看| 日韩精品一区第一页| 在线观看亚洲精品福利片| 日本不卡视频在线观看| 国产精品nxnn| 涩涩av在线| 伊人影院久久| 国产精品亚洲片在线播放| 精品一区二区三区免费看| 国际精品欧美精品| 国产一区二区视频在线看| 91av亚洲| 亚洲综合中文| 精品一区不卡| 久久精品99久久无色码中文字幕| 欧美特黄视频| 国产日韩一区二区三区在线播放| 97精品中文字幕| 蜜桃一区二区三区在线| 国产精品v一区二区三区| 国产主播一区| 国产精品一区二区三区四区在线观看| a国产在线视频| 中文字幕一区二区三区在线视频| 欧美激情 亚洲a∨综合| 成人亚洲欧美| 日韩国产一区二| 亚洲国产专区| 国产成人精品一区二区免费看京 | 妖精视频成人观看www| 国产精品一区免费在线| 婷婷激情图片久久| 麻豆视频一区二区| 丝袜亚洲精品中文字幕一区| 精品视频99| 日本国产一区| 好吊一区二区三区| 国产成人精品一区二区三区免费| 亚洲美女久久| 五月天综合网站| 91亚洲国产高清| 国产精品蜜月aⅴ在线| 日本欧美久久久久免费播放网| 免费欧美一区| 另类中文字幕国产精品| 精品视频免费| 国产一区2区在线观看| 国产日韩欧美一区二区三区在线观看 | 日韩av在线播放中文字幕| 黄色日韩在线| 好吊日精品视频| 婷婷综合五月| 欧美日韩激情| 偷拍欧美精品| 99re国产精品| 模特精品在线| 中文一区一区三区免费在线观| 蜜臀av免费一区二区三区| 亚洲国内欧美| 秋霞国产精品| 女人天堂亚洲aⅴ在线观看| 亚洲1234区| 成人午夜国产| 播放一区二区| 日韩在线二区| 久久国产影院| 九九综合在线| 99香蕉国产精品偷在线观看 | 亚洲一级网站| 婷婷综合社区| 午夜精品一区二区三区国产| 午夜久久美女| 石原莉奈在线亚洲三区| 综合激情在线| 亚欧洲精品视频在线观看| 日韩综合小视频| 国产日韩欧美一区二区三区 | 日韩久久精品网| 亚洲国产不卡| 鲁大师影院一区二区三区| 亚洲视频电影在线| 国产日产一区| 日本一区二区高清不卡| av亚洲一区二区三区| 亚洲欧美日韩高清在线| 一区二区精品| 久久久久久一区二区| 亚洲精品888| 欧美私人啪啪vps| 日本在线精品| 日韩视频二区| 国产福利亚洲| 一本一道久久a久久精品蜜桃| 日本亚洲最大的色成网站www| 麻豆成人在线观看| 久久狠狠婷婷| 国产精品.xx视频.xxtv| 久久精品官网| 久久精品凹凸全集| av高清一区| 国产精品色在线网站| 自拍日韩欧美| 国产一区不卡| 视频一区日韩精品| 91日韩在线| 亚洲欧洲专区| 亚洲v在线看| 国产 日韩 欧美 综合 一区| 国产精品日本| se01亚洲视频 | 久久激情综合网| 蜜臀国产一区二区三区在线播放| 欧美久久天堂| 蜜臀久久99精品久久久久宅男| 粉嫩av一区二区三区四区五区 | 日本在线成人| 激情自拍一区| 中文字幕人成乱码在线观看| 六月婷婷一区| 婷婷综合在线| 久久九九国产| 99tv成人| 久久精品影视| 久久国产亚洲精品| 色综合狠狠操| 国产精品流白浆在线观看| 97成人在线|