Ionic - กล้อง Cordova

ปลั๊กอินกล้อง Cordova ใช้ไฟล์ native camera สำหรับการถ่ายภาพหรือรับภาพจากแกลเลอรีภาพ

การใช้กล้อง

เปิดโฟลเดอร์รูทโปรเจ็กต์ของคุณในพรอมต์คำสั่งจากนั้นดาวน์โหลดและติดตั้งปลั๊กอินกล้อง Cordova ด้วยคำสั่งต่อไปนี้

C:\Users\Username\Desktop\MyApp> cordova plugin add org.apache.cordova.camera

ตอนนี้เราจะสร้างบริการสำหรับการใช้ปลั๊กอินกล้อง เราจะใช้ไฟล์AngularJS factory และสัญญาวัตถุ $q ที่ต้องฉีดเข้าโรงงาน

รหัส services.js

.factory('Camera', function($q) {
   return {
      getPicture: function(options) {
         var q = $q.defer();

         navigator.camera.getPicture(function(result) {
            q.resolve(result);
         }, function(err) {
            q.reject(err);
         }, options);

         return q.promise;
      }
   }
});

ในการใช้บริการนี้ในแอพเราจำเป็นต้องฉีดมันไปยังคอนโทรลเลอร์เพื่อเป็นการพึ่งพา Cordova Camera API ให้getPicture วิธีการซึ่งใช้สำหรับการถ่ายภาพโดยใช้กล้องเนทีฟ

การตั้งค่ากล้องเนทีฟสามารถปรับแต่งเพิ่มเติมได้โดยส่งไฟล์ options พารามิเตอร์เป็น takePictureฟังก์ชัน คัดลอกตัวอย่างโค้ดที่กล่าวถึงข้างต้นไปยังคอนโทรลเลอร์ของคุณเพื่อทริกเกอร์ลักษณะการทำงานนี้ มันจะเปิดแอปพลิเคชั่นกล้องและส่งคืนฟังก์ชันการโทรกลับสำเร็จพร้อมข้อมูลภาพหรือฟังก์ชันเรียกกลับข้อผิดพลาดพร้อมข้อความแสดงข้อผิดพลาด เราจะต้องมีปุ่มสองปุ่มที่จะเรียกใช้ฟังก์ชันที่เรากำลังจะสร้างขึ้นและเราต้องแสดงภาพบนหน้าจอ

รหัส HTML

<button class = "button" ng-click = "takePicture()">Take Picture</button>
<button class = "button" ng-click = "getPicture()">Open Gallery</button>
<img ng-src = "{{user.picture}}">

รหัสคอนโทรลเลอร์

.controller('MyCtrl', function($scope, Camera) {
   $scope.takePicture = function (options) {
      var options = {
         quality : 75,
         targetWidth: 200,
         targetHeight: 200,
         sourceType: 1
      };

      Camera.getPicture(options).then(function(imageData) {
         $scope.picture = imageData;;
      }, function(err) {
         console.log(err);
      });
   };
})

ผลลัพธ์จะมีลักษณะดังที่แสดงในภาพหน้าจอต่อไปนี้

หากคุณต้องการใช้ภาพจากแกลเลอรีของคุณสิ่งเดียวที่คุณต้องเปลี่ยนคือไฟล์ sourceTypeวิธีการจากพารามิเตอร์ตัวเลือกของคุณ การเปลี่ยนแปลงนี้จะเปิดหน้าต่างป๊อปอัปแทนกล้องและให้คุณเลือกรูปภาพที่คุณต้องการจากอุปกรณ์

คุณสามารถดูรหัสต่อไปนี้โดยที่ไฟล์ sourceType ตัวเลือกเปลี่ยนเป็น 0. ตอนนี้เมื่อคุณแตะปุ่มที่สองมันจะเปิดเมนูไฟล์จากอุปกรณ์

รหัสคอนโทรลเลอร์

.controller('MyCtrl', function($scope, Camera) {
   $scope.getPicture = function (options) {
	   var options = {
         quality : 75,
         targetWidth: 200,
         targetHeight: 200,
         sourceType: 0
      };

      Camera.getPicture(options).then(function(imageData) {
         $scope.picture = imageData;;
      }, function(err) {
         console.log(err);
      });
   };  
})

ผลลัพธ์จะมีลักษณะดังที่แสดงในภาพหน้าจอต่อไปนี้

เมื่อคุณบันทึกภาพที่คุณถ่ายภาพนั้นจะปรากฏบนหน้าจอ คุณสามารถจัดแต่งทรงผมในแบบที่คุณต้องการ

สามารถใช้ตัวเลือกอื่น ๆ ได้เช่นกันซึ่งบางส่วนมีให้ในตารางต่อไปนี้

พารามิเตอร์ ประเภท รายละเอียด
คุณภาพ จำนวน คุณภาพของภาพช่วง 0-100
destinationType จำนวน รูปแบบของรูปภาพ
sourceType จำนวน ใช้สำหรับตั้งค่าแหล่งที่มาของรูปภาพ
allowEdit บูลีน ใช้สำหรับอนุญาตให้แก้ไขภาพ
encodingType จำนวน ค่า 0 จะตั้งค่า JPEG และค่า 1 จะตั้งค่า PNG
targetWidth จำนวน ใช้สำหรับปรับขนาดความกว้างของภาพ
เป้าหมาย จำนวน ใช้สำหรับปรับขนาดความสูงของภาพ
mediaType สตริง ใช้สำหรับตั้งค่าประเภทสื่อ
cameraDirection จำนวน ค่า 0 จะตั้งค่ากล้องหลังและค่า 1 จะตั้งค่ากล้องหน้า
popoverOptions สตริง ตัวเลือกเฉพาะ iOS ที่ระบุตำแหน่งป็อปโอเวอร์ใน iPad
saveToPhotoAlbum บูลีน ใช้สำหรับบันทึกภาพลงในอัลบั้มรูป
ถูกต้อง บูลีน ใช้สำหรับแก้ไขการวางแนวของภาพที่ถ่าย