真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么在Android中利用API獲取數(shù)據(jù)庫中的圖片文件

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)怎么在Android中利用API獲取數(shù)據(jù)庫中的圖片文件,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

西烏珠穆沁網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),西烏珠穆沁網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為西烏珠穆沁超過千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的西烏珠穆沁做網(wǎng)站的公司定做!

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

使用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所以我們將所有的端口轉(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的類中添加一句代碼這樣我們就將所有的端口返回數(shù)據(jù)變成了JSON格式的數(shù)據(jù)了。

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

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


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

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

Android 如何操作圖片

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

想來看一下代碼:

/**
 * ClassName- @MainActivity-@初始換主頁面底部的圖片
 **/
private void initPictureData() {
  new Thread(new Runnable() {
    @Override
    public void run() {
      //通過http網(wǎng)絡(luò)訪問,獲取到我們的網(wǎng)絡(luò)數(shù)據(jù)。將Http的GET方法進(jìn)行了封裝
      String httpData = Global.httpGet("Pictures", "");
      //將JSON進(jìn)行解析并且添加到List中
      List list = pictureData_JsonHelper.getJsonData(httpData);
      Log.d("main_pictureData", String.valueOf(list.size()));
      final List 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 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() {
        @Override
        public void run() {
          ViewPager viewPager = findViewById(R.id.viewPager);
          viewPager.setAdapter(new viewPager_Adapter(viewsList));
        }
      });
    }
  }).start();
}

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

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

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
  //這邊我們需要對數(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)絡(luò)數(shù)據(jù)(超簡單,直接調(diào)用)

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

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)絡(luò)出錯",Toast.LENGTH_SHORT).show();
      }
    });
    e.printStackTrace();
  }
  return result;
}
//接下來就是解析獲取到的json數(shù)據(jù)了,json數(shù)據(jù)的解析就需要根據(jù)需求自定義了

上述就是小編為大家分享的怎么在Android中利用API獲取數(shù)據(jù)庫中的圖片文件了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)站欄目:怎么在Android中利用API獲取數(shù)據(jù)庫中的圖片文件
當(dāng)前路徑:http://weahome.cn/article/iehpid.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部