电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

Android 通過API獲取數據庫中的圖片文件方式

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

Overview

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

開發環境以及技術

使用Visual Studio 2019

Android Studio 3.5

API 使用 ASP .NET WEB API 開發

數據庫操作只用Entity Framework

使用本地數據庫作為數據源

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

API 開發

這里我為了開發的方便,所以所使用的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的類中添加一句代碼這樣我們就將所有的端口返回數據變成了JSON格式的數據了。

然后我們看一下如何返回我們的圖片數據:

// 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的方法,先是將我們的字節數組轉換為字符串并將其添加到元組中。并且進行返回。

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

Android 如何操作圖片

首先我們顯示獲取我們的網絡資源。

想來看一下代碼:

/** * ClassName- @MainActivity-@初始換主頁面底部的圖片 **/private void initPictureData() { new Thread(new Runnable() { @Override public void run() { //通過http網絡訪問,獲取到我們的網絡數據。將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++) {//在循環將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將字節數組轉換為Bitmap //這邊我們需要對數據庫返回的base64的數稍稍的做一下處理。否則可能無法正常顯示圖像。 for (int i = 0; i < bytes.length; ++i) { if (bytes[i] < 0) { bytes[i] += 256; } } //生成圖片并且返回。 return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);}

這樣我們的全部過程就已經完成了。

補充知識:android 獲取網絡數據(超簡單,直接調用)

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

String getNetData(String connectURL){ String result = ''; //用來取得返回的String; //發送post請求 HttpPost httpRequest = new HttpPost(connectURL); //Post運作傳送變數必須用NameValuePair[]陣列儲存 try { //發出HTTP請求 Log.d('請求連接', '在發送請求'); List params = new ArrayList(); params.add(new BasicNameValuePair('start', '123321'));//post請求(必須有,數據自定義) //params.add(new BasicNameValuePair('end', end+''));//可添加多個Post請求碼,php中按鍵值對獲取 httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); //取得HTTP response HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequest); //若狀態碼為200則請求成功,取到返回數據 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(), '網絡出錯',Toast.LENGTH_SHORT).show(); } }); e.printStackTrace(); } return result;}//接下來就是解析獲取到的json數據了,json數據的解析就需要根據需求自定義了

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

標簽: Android
相關文章:
主站蜘蛛池模板: 球磨机,节能球磨机价格,水泥球磨机厂家,粉煤灰球磨机-吉宏机械制造有限公司 | R507制冷剂,R22/R152a制冷剂厂家-浙江瀚凯制冷科技有限公司 | 档案密集架_电动密集架_移动密集架_辽宁档案密集架-盛隆柜业厂家现货批发销售价格公道 | YT保温材料_YT无机保温砂浆_外墙保温材料_南阳银通节能建材高新技术开发有限公司 | 欧美日韩国产一区二区三区不_久久久久国产精品无码不卡_亚洲欧洲美洲无码精品AV_精品一区美女视频_日韩黄色性爱一级视频_日本五十路人妻斩_国产99视频免费精品是看4_亚洲中文字幕无码一二三四区_国产小萍萍挤奶喷奶水_亚洲另类精品无码在线一区 | 抓斗式清污机|螺杆式|卷扬式启闭机|底轴驱动钢坝|污水处理闸门-方源水利机械 | 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 生鲜配送系统-蔬菜食材配送管理系统-连锁餐饮订货配送软件-挪挪生鲜供应链管理软件 | 南京技嘉环保科技有限公司-杀菌除臭剂|污水|垃圾|厕所|橡胶厂|化工厂|铸造厂除臭剂 | 水热合成反应釜-防爆高压消解罐-西安常仪仪器设备有限公司 | 棉服定制/厂家/公司_棉袄订做/价格/费用-北京圣达信棉服 | 首页 - 军军小站|张军博客 | 注塑_注塑加工_注塑模具_塑胶模具_注塑加工厂家_深圳环科 | 微型气泵-真空-蠕动-水泵-厂家-深圳市品亚科技有限公司 | 多米诺-多米诺世界纪录团队-多米诺世界-多米诺团队培训-多米诺公关活动-多米诺创意广告-多米诺大型表演-多米诺专业赛事 | 蜘蛛车-登高车-高空作业平台-高空作业车-曲臂剪叉式升降机租赁-重庆海克斯公司 | 砍排机-锯骨机-冻肉切丁机-熟肉切片机-预制菜生产线一站式服务厂商 - 广州市祥九瑞盈机械设备有限公司 | 浙江上沪阀门有限公司 | 电镀电源整流器_高频电解电源_单脉双脉冲电源 - 东阳市旭东电子科技 | 硅胶管挤出机厂家_硅胶挤出机生产线_硅胶条挤出机_臣泽智能装备 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | 考试试题_试卷及答案_诗词单词成语 - 优易学 | 台湾Apex减速机_APEX行星减速机_台湾精锐减速机厂家代理【现货】-杭州摩森机电 | 代写标书-专业代做标书-商业计划书代写「深圳卓越创兴公司」 | 济南轻型钢结构/济南铁艺护栏/济南铁艺大门-济南燕翔铁艺制品有限公司 | 药品冷藏箱厂家_低温冰箱_洁净工作台-济南欧莱博电子商务有限公司官网 | 泰州物流公司_泰州货运公司_泰州物流专线-东鑫物流公司 | 钢衬四氟管道_钢衬四氟直管_聚四氟乙烯衬里管件_聚四氟乙烯衬里管道-沧州汇霖管道科技有限公司 | 水冷式工业冷水机组_风冷式工业冷水机_水冷螺杆冷冻机组-深圳市普威机械设备有限公司 | 石栏杆_青石栏杆_汉白玉栏杆_花岗岩栏杆 - 【石雕之乡】点石石雕石材厂 | 江苏南京多语种翻译-专业翻译公司报价-正规商务翻译机构-南京华彦翻译服务有限公司 | 杭州ROHS检测仪-XRF测试仪价格-百科| Magnescale探规,Magnescale磁栅尺,Magnescale传感器,Magnescale测厚仪,Mitutoyo光栅尺,笔式位移传感器-苏州连达精密量仪有限公司 | 众品家具网-家具品牌招商_家具代理加盟_家具门户的首选网络媒体。 | 磁力抛光机_磁力研磨机_磁力去毛刺机_精密五金零件抛光设备厂家-冠古科技 | 合肥风管加工厂-安徽螺旋/不锈钢风管-通风管道加工厂家-安徽风之范 | 啤酒设备-小型啤酒设备-啤酒厂设备-济南中酿机械设备有限公司 | 英语词典_成语词典_日语词典_法语词典_在线词典网 | 立刷【微电签pos机】-嘉联支付立刷运营中心 | jrs高清nba(无插件)直播-jrs直播低调看直播-jrs直播nba-jrs直播 上海地磅秤|电子地上衡|防爆地磅_上海地磅秤厂家–越衡称重 | 隐形纱窗|防护纱窗|金刚网防盗纱窗|韦柏纱窗|上海青木装潢制品有限公司|纱窗国标起草单位 | 热风机_工业热风机生产厂家上海冠顶公司提供专业热风机图片价格实惠 |