拍照上传

安装插件

  1. 相机插件
  2. ionic cordova plugin add cordova-plugin-camera
  3. npm install @ionic-native/camera
  4. 文件插件, 默认情况下先不引入,因为后面会报错
  5. ionic cordova plugin add cordova-plugin-file
  6. npm install @ionic-native/file
  7. 文件上传插件
  8. ionic cordova plugin add cordova-plugin-file-transfer
  9. npm install @ionic-native/file-transfer

app.module.ts

  1. import { Camera } from '@ionic-native/camera/ngx';
  2. import { File } from '@ionic-native/file/ngx';
  3. import {FileTransfer} from '@ionic-native/file-transfer/ngx';
  4. 修改providers中添加:
  5. Camera,
  6. File,
  7. FileTransfer,

使用地方

  1. import { Camera, CameraOptions } from '@ionic-native/camera/ngx';
  2. import { FileTransfer, FileUploadOptions, FileTransferObject } from '@ionic-native/file-transfer/ngx';
  3. constructor(private camera: Camera,private transfer: FileTransfer) { }
  4. // 拍照
  5. imgUpload() {
  6. const options: CameraOptions = {
  7. quality: 100, // 图片质量
  8. destinationType: this.camera.DestinationType.FILE_URI, // 返回类型 .FILE_URI 返回文件地址 .DATA_URL 返回base64编码
  9. encodingType: this.camera.EncodingType.JPEG, // 图片格式 JPEG=0 PNG=1
  10. mediaType: this.camera.MediaType.PICTURE, // 媒体类型
  11. sourceType: this.camera.PictureSourceType.CAMERA, // 图片来源 CAMERA相机 PHOTOLIBRARY 图库
  12. allowEdit: true, // 允许编辑
  13. targetWidth: 300, // 缩放图片的宽度
  14. targetHeight: 300, // 缩放图片的高度
  15. saveToPhotoAlbum: false, // 是否保存到相册
  16. correctOrientation: true, // 设置摄像机拍摄的图像是否为正确的方向
  17. };
  18. this.camera.getPicture(options).then((imageData) => {
  19. // 返回拍照的地址
  20. this.doUpload(imageData);
  21. }, (err) => {
  22. alert(err);
  23. });
  24. }
  25. // 文件上传
  26. doUpload(src: any) {
  27. const fileTransfer: FileTransferObject = this.transfer.create();
  28. const options: FileUploadOptions = {
  29. fileKey: 'file',
  30. fileName: 'name.jpg',
  31. mimeType: 'image/jpeg',
  32. httpMethod: 'POST',
  33. params: { username : '张三'},
  34. headers: {}
  35. };
  36. const api = 'http://127.0.0.1/imgupload';
  37. fileTransfer.upload(src, encodeURI(api), options)
  38. .then((data) => {
  39. alert(JSON.stringify(data));
  40. }, (err) => {
  41. alert(JSON.stringify(err));
  42. });
  43. }

https://ionicframework.com/docs/native/camera/

相册

安装插件

  1. ionic cordova plugin add cordova-plugin-telerik-imagepicker
  2. npm install @ionic-native/image-picker

app.module.ts

  1. import { ImagePicker } from '@ionic-native/image-picker/ngx';
  2. 修改providers中添加:
  3. ImagePicker,

https://ionicframework.com/docs/native/image-picker/

汉化

  1. platforms\android\app\src\main\res 目录下
  2. 增加values-zh 文件,新建 multiimagechooser_strings_hu.xml 文件
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3. <string name="multi_app_name">图片选择器</string>
  4. <string name="free_version_label">还可以选择 %d 张图片</string>
  5. <string name="error_database">打开图像数据库时出错,请反馈问题.</string>
  6. <string name="requesting_thumbnails">请求缩略图,请耐心等待</string>
  7. <string name="multi_image_picker_processing_images_title">正在处理...</string>
  8. <string name="multi_image_picker_processing_images_message">请稍等...</string>
  9. <string name="discard" translatable="false">取消</string>
  10. <string name="done" translatable="false">确定</string>
  11. </resources>