Ionic3學(xué)習(xí)筆記(十二)拍照上傳圖片以及從相冊(cè)選擇圖片上傳

本文為原創(chuàng)文章藤为,轉(zhuǎn)載請(qǐng)標(biāo)明出處

目錄

  1. 安裝插件
  2. 導(dǎo)入 app.module.ts
  3. 創(chuàng)建 page
  4. 更多
  5. 效果圖

1. 安裝插件

終端運(yùn)行:

ionic cordova plugin add cordova-plugin-camera
npm install --save @ionic-native/camera

ionic cordova plugin add cordova-plugin-telerik-imagepicker --variable PHOTO_LIBRARY_USAGE_DESCRIPTION="your usage message"
npm install --save @ionic-native/image-picker

2. 導(dǎo)入 app.module.ts

...
import {Camera} from "@ionic-native/camera";
import {ImagePicker} from "@ionic-native/image-picker";
...

@NgModule({
  ...
  providers: [
    ...
    Camera,
    ImagePicker,
    ...
  ]
  ...
})
...

3. 創(chuàng)建 page

終端運(yùn)行:

ionic g page edit

edit.html

<ion-header>

  <ion-navbar>
    <ion-title>編輯</ion-title>

    <ion-buttons end>
      <button ion-button>保存</button>
    </ion-buttons>
  </ion-navbar>

</ion-header>

<ion-content>
  <div class="header-image" tappable [ngStyle]="{'background-image': 'url('+avatar+')'}" (click)="presentActionSheet()"></div>
</ion-content>

edit.scss

page-edit {
  .header-image {
    width: 100px;
    height: 100px;
    border-radius: 50%;
    margin-top: 20px;
    margin-left: auto;
    margin-right: auto;
    background-size: cover;
  }
}

edit.ts

import {Component} from '@angular/core';
import {IonicPage, NavController, NavParams, ActionSheetController, AlertController} from 'ionic-angular';

import {ImagePicker, ImagePickerOptions} from "@ionic-native/image-picker";
import {Camera, CameraOptions} from "@ionic-native/camera";

@IonicPage()
@Component({
  selector: 'page-edit',
  templateUrl: 'edit.html',
})
export class EditPage {

  avatar: string = "";

  constructor(public navCtrl: NavController, public navParams: NavParams, public actionSheetCtrl: ActionSheetController, public alertCtrl: AlertController, public imagePicker: ImagePicker, public camera: Camera) {
  }

  presentActionSheet() {
    let actionSheet = this.actionSheetCtrl.create({
      buttons: [{
        text: '拍照',
        role: 'takePhoto',
        handler: () => {
          this.takePhoto();
        }
      }, {
        text: '從相冊(cè)選擇',
        role: 'chooseFromAlbum',
        handler: () => {
          this.chooseFromAlbum();
        }
      }, {
        text: '取消',
        role: 'cancel',
        handler: () => {
          console.log("cancel");
        }
      }]
    });

    actionSheet.present().then(value => {
      return value;
    });
  }
  takePhoto() {
    const options: CameraOptions = {
      quality: 100,
      allowEdit: true,
      targetWidth: 200,
      targetHeight: 200,
      saveToPhotoAlbum: true,
    };

    this.camera.getPicture(options).then(image => {
      console.log('Image URI: ' + image);
      this.avatar = image.slice(7);
    }, error => {
      console.log('Error: ' + error);
    });
  }

  chooseFromAlbum() {
    const options: ImagePickerOptions = {
      maximumImagesCount: 1,
      width: 200,
      height: 200
    };
    this.imagePicker.getPictures(options).then(images => {
      if (images.length > 1) {
        this.presentAlert();
      } else if (images.length === 1) {
        console.log('Image URI: ' + images[0]);
        this.avatar = images[0].slice(7);
      }
    }, error => {
      console.log('Error: ' + error);
    });
  }

  presentAlert() {
    let alert = this.alertCtrl.create({title: "上傳失敗", message: "只能選擇一張圖片作為頭像哦", buttons: ["確定"]});
    alert.present().then(value => {
      return value;
    });
  }

}

4. 更多

Ionic Native - Camera
GitHub - cordova-plugin-camera
Ionic Native - Image Picker
GitHub - ImagePicker

5. 效果圖

iOS:

iOS

Android:

Android

如有不當(dāng)之處绿鸣,請(qǐng)予指正滴肿,謝謝~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末和媳,一起剝皮案震驚了整個(gè)濱河市漆际,隨后出現(xiàn)的幾起案子械拍,更是在濱河造成了極大的恐慌志于,老刑警劉巖涮因,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異伺绽,居然都是意外死亡养泡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)奈应,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)澜掩,“玉大人,你說(shuō)我怎么就攤上這事杖挣〖玳牛” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵惩妇,是天一觀(guān)的道長(zhǎng)株汉。 經(jīng)常有香客問(wèn)我筐乳,道長(zhǎng),這世上最難降的妖魔是什么乔妈? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任哥童,我火速辦了婚禮,結(jié)果婚禮上褒翰,老公的妹妹穿的比我還像新娘贮懈。我一直安慰自己,他們只是感情好优训,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布朵你。 她就那樣靜靜地躺著,像睡著了一般揣非。 火紅的嫁衣襯著肌膚如雪抡医。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 50,050評(píng)論 1 291
  • 那天早敬,我揣著相機(jī)與錄音忌傻,去河邊找鬼。 笑死搞监,一個(gè)胖子當(dāng)著我的面吹牛水孩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播琐驴,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼俘种,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了绝淡?” 一聲冷哼從身側(cè)響起宙刘,我...
    開(kāi)封第一講書(shū)人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎牢酵,沒(méi)想到半個(gè)月后悬包,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡馍乙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年布近,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片潘拨。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吊输,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出铁追,到底是詐尸還是另有隱情季蚂,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站扭屁,受9級(jí)特大地震影響算谈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜料滥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一然眼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧葵腹,春花似錦高每、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至阻肩,卻和暖如春带欢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背烤惊。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工乔煞, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人柒室。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓渡贾,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親伦泥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子剥啤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • afinalAfinal是一個(gè)android的ioc锦溪,orm框架 https://github.com/yangf...
    passiontim閱讀 15,412評(píng)論 2 45
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一種新的協(xié)議不脯。它實(shí)...
    香橙柚子閱讀 23,809評(píng)論 8 183
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,863評(píng)論 25 707
  • 我是筱,2014年冬刻诊,我在南昌防楷。 我一直在北方長(zhǎng)大,18歲之前则涯,在北方的小縣城里复局。18歲之后,來(lái)到南昌粟判。我從未想過(guò)...
    筱游雜生活閱讀 361評(píng)論 5 6
  • 朋友圈亿昏,一個(gè)新時(shí)代的產(chǎn)物,一個(gè)互聯(lián)網(wǎng)時(shí)代交流與溝通的的平臺(tái)档礁。朋友圈角钩,首先是朋友才融入的圈子,聽(tīng)起來(lái)非常馨暖,似一架...
    若水_086閱讀 747評(píng)論 28 22