PracticU

שימוש במצלמה של הטלפון הנייד

בלי כתוביותעם כתוביות
PracticU › קורס PhoneGap - פיתוח אפליקציות לאנדרואיד ואייפון › שימוש במצלמה של הטלפון הנייד
מילון מושגים:
תמונה - קובץ גרפי המוצג על המסך. בהקשר של וירטואליזציה או Docker, תבנית מוכנה שממנה יוצרים מכונה או קונטיינר.
כפתור - רכיב בממשק המשתמש שהמשתמש לוחץ עליו כדי להפעיל פעולה, כמו שליחת טופס או מעבר לדף אחר.
תגית - סימון בקוד, למשל ב-HTML, שתוחם רכיב ומגדיר את תפקידו או תכונותיו. גם תווית לסימון וקיטלוג פריטים.
JSON - פורמט טקסט קריא לייצוג נתונים מובְנים כזוגות מפתח-ערך, נפוץ להחלפת מידע בין שרת ללקוח.
URL - הכתובת שמזהה משאב באינטרנט, למשל דף אתר, וכוללת פרוטוקול, שם מארח ונתיב.
Base64 - שיטת קידוד שממירה נתונים בינאריים לטקסט מתווים מודפסים, כדי להעבירם בבטחה בערוצים טקסטואליים.
בינארי - ייצוג מידע בבסיס 2 בעזרת הספרות 0 ו-1. גם קובץ הכולל קוד מכונה ולא טקסט קריא.
אמולטור - תוכנה שמחקה מכשיר או סביבה אחרת, למשל כדי להריץ ולבדוק אפליקציית מובייל על המחשב.

שימוש במצלמה של הטלפון הנייד
בשיעור לומדים לצלם תמונה מהמצלמה של הטלפון, להציג אותה למשתמש ולשלוח אותה לשרת באמצעות PhoneGap. אפשר גם לבחור תמונה מספריית התמונות או מאלבום בטלפון.
השלבים העיקריים
1. כפתור לצילום: בעמוד מוגדר כפתור שמפעיל את הפונקציה TakePicture, ותגית img מוסתרת בהתחלה כדי שלא תופיע תמונה ריקה.
2. קריאה למצלמה: קוראים ל-navigator.camera.getPicture עם שתי פונקציות, אחת להצלחה ואחת לשגיאה, ואובייקט JSON עם הפרמטרים.
3. הצגת התמונה: בהצלחה מכניסים את התמונה לתכונה src של תגית ה-img, ומשנים את התצוגה שלה ל-block.
4. מקור אחר לתמונה: אותו קוד עובד גם עבור ספריית התמונות ועבור אלבום, עם שינוי בפרמטר מקור התמונה.
פקודות והגדרות
- destinationType: Camera.DestinationType.DATA_URL - התמונה מתקבלת כמחרוזת Base64.
- destinationType: Camera.DestinationType.FILE_URI - התמונה מתקבלת כנתיב לקובץ.
- quality: 50 - איכות בין 0 ל-100.
- sourceType: Camera.PictureSourceType.PHOTOLIBRARY - בחירה מספריית התמונות במקום מהמצלמה.
- sourceType: Camera.PictureSourceType.SAVEDPHOTOALBUM - בחירה מאלבום.
איך זה עובד
תמונה היא מידע בינארי, ואפשר להמיר אותו למחרוזת בקידוד Base64. מחרוזת כזאת קלה לשליחה לשרת כטקסט רגיל. באמולטור התמונה היא הדמיה בלבד, כי האמולטור לא מצלם באמת.
שימו לב
בתצורת FILE_URI מקבלים נתיב ולא מחרוזת, ולכן יש להחליף את מקור התמונה בהתאם. שגיאה בשם המשתנה, למשל image data במקום image URI, היא טעות נפוצה.
בסיום השיעור יש בידיכם דרך לצלם תמונה, להציג אותה ולהכין אותה לשליחה לשרת.
השיעור הבא בקורס: אנשי קשר בטלפון

פרקי ההרצאה: שימוש במצלמה של הטלפון הנייד

  1. 00:00

    הכרת שימוש במצלמת הטלפון

  2. 01:32

    הפונקציה getPicture של navigator.camera

  3. 03:07

    הצגת התמונה שצולמה

  4. 04:23

    קידוד התמונה ב-BASE64

  5. 06:13

    הצגת רכיב התמונה ב-HTML

  6. 07:32

    הגדרת quality ו-destinationType

  7. 09:10

    הרצה באמולטור וצילום תמונה

תמלול ההרצאה: שימוש במצלמה של הטלפון הנייד

הטקסט המלא של הדקות הראשונות בהרצאה «שימוש במצלמה של הטלפון הנייד» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:01

    אנחנו מגיעים לשימוש במצלמה של הטלפון הנייד. כאן אנחנו יכולים דרך פונגאפ ממש לצלם תמונה ולשמור את התמונה, לשלוח אותה לשרת אפילו, להציג אותה למשתמש ועוד כל מיני דברים.

  2. 00:16

    אז בואו נראה איך אנחנו משתמשים בפונגאפ בכדי להשיג תמונה מהמצלמה. אנחנו נמצאים בקאמרה. בואו ניקח לחצן וכאשר אנחנו לוחצים עליו אנחנו רוצים לצלם תמונה.

  3. 00:30

    אז יש לנו כאן input type button value take a picture on click איזושהי פונקציה שאנחנו כבר הולכים לבנות בנוסף בואו ניקח פה איזשהו אימג' תן לו איזשהו איידי, מיי אימג' ונגדיר כזה דבר קודם כל אנחנו לא רוצים שיראו על ההתחלה את התמונה מפני שאין לנו תמונה להציג כי המשתמש עדיין לא צילם תמונה זה יהיה

  4. 01:17

    display none ב css תן לה איזשהו width נניח 150 פיקסלים ויש לנו כאן עכשיו את הרכיב של התמונה אוקיי בואו נעבור ונכתוב את הפונקציה TakePicture.

  5. 01:47

    אז איך בעצם אנחנו משתמשים בפונגאפ בשביל לצלם תמונה? מה שאנחנו צריכים לעשות זה לפנות לאובייקט Navigator, נקודה Camera, אובייקט שפונגאפ שתלה בתוך Navigator, ולקרוא לפונקציה GetPicture.

  6. 02:07

    פונקציה GetPicture אומרת לנו תביאו לי שלושה ערכים, שתי פונקציות אינליין ואובייקט ג'ייסון עם כל מיני פרמטרים בנוגע לתמונה.

  7. 02:18

    פונקציית inline ראשונה אני אקרא לה כאשר יהיה הצלחה בלכידת התמונה ואני אשלח לה את ה-image data פה אנחנו צריכים לכתוב תכף מה לעשות כשנקבל את התמונה פונקציה נוספת פונקציית inline שאמורה להכיל איזשהו error ואני אקרא לה רק אם אני לא אצליח לקבל את התמונה

  8. 02:46

    ואובייקט json נוסף שמכיל מספר פרמטרים לגבי התמונה שאנחנו רוצים לשלוח אז בואו נתחיל לבנות את הפונקציות ואת האובייקט. אז יש לנו כאן את הפונקציה הראשונה, נרד פה שורה, יש לנו את הפונקציה השנייה, נרד פה שורה, ויש פה את האובייקט json שתכף נראה מה אנחנו נותנים לו.

  9. 03:14

    אז מה אנחנו רוצים לעשות כאשר הצלחנו לקבל תמונה? כאשר הצלחנו לקבל תמונה כל מה שאנחנו רוצים לעשות זה להכניס את התמונה עצמה לסורס של אובייקט האימג' שפתחנו ב-HTML.

  10. 03:32

    אנחנו יכולים לעשות את זה לדוגמה עם jQuery. נאתר את my-image ונפנה לאטריביוט שנקרא src ונכניס לתוכו איזושהי מכרוזת. והמכרוזת שאנחנו הולכים להכניס לתוכו זאת המכרוזת הבאה data.image/jpeg.data.

  11. 04:08

    בייס 64 תפסיק ומשרשרים את זה עם האימג' דאטה שהתקבל. עכשיו בואו נסביר מה בדיוק קורה כאן. כאשר אנחנו מצליחים לצלם תמונה מהמצלמה אנחנו יכולים לקבל אותה על ידי מכרוזת שנחשבת עידוד בייס 64. מה זה אומר?

  12. 04:35

    אנחנו יכולים לייצג כל מידע בינארי באמצעות מכרוזת שכל תו במכרוזת מקודד או יותר נכון כל בייט במידע הבינארי מקודד לאיזשהו תו ויש כל מיני קידודים אחד מהם נקרא בייס 64.

  13. 04:55

    אז מה שקורה כאן זה שפונגאפ מאפשרת לנו לצלם תמונה והפונקציה get picture במידה והצליחה לצלם את התמונה מהטלפון הנייד נותנת לנו, קוראת לפונקציה הזאת ונותנת לנו את התמונה בפורמט בייס 64. זה כאילו שהיא נותנת לנו מחרוזת שמתארת את התמונה.

  14. 05:16

    הרי תמונה זה לא מחרוזת, תמונה זה לא מידע טקסטואלי, תמונה זה מידע בינארי שמתאר פיקסלים ופורמט וכולי. אבל עדיין ניתן להפוך כל מידע בינארי למחרוזת, לדוגמה בפורמט בייס 64. וזה בדיוק מה שקורה במקרה הזה.

  15. 05:31

    אם היינו מציגים פה על ידי אלרט את האימג' דאטה, היינו ממש מקבלים את המחרוזת, או יותר נכון רואים את המחרוזת עצמה מוצגת באלרט. אנחנו יכולים לעשות את זה ותכף נמחק את האלרט.

  16. 05:48

    אם אנחנו רוצים להציג את התמונה והיא בבייס 64 ב-HTML אז אנחנו פשוט מציינים לדפדפן שאנחנו רוצים להציג תמונה, פורמט JPEG, כי זה הפורמט שפונגאפ מצלמת, שהנייד מצלם, והתמונה נמצאת בבייס 64 ובדיוק היא כאן.

  17. 06:11

    אז זה כל מה שאנחנו רוצים לעשות. הדבר הבא שאנחנו רוצים זה להציג את אובייקט התמונה, מפני שאובייקט התמונה ב-HTML, התגית הזאת, אם שימו לב, הגדרנו שעל ידי CSS לא רואים אותה, כי אנחנו לא רוצים שבהתחלה היוזר יראה תמונה ריקה או תמונה עם שגיאה.

  18. 06:33

    כאן אנחנו פשוט רוצים לפנות לסטיילינג שלה. בואו נעשה את זה גם כן על ידי jQuery. יש לנו כאן את MyImage. נלך לפונקציית CSS של jQuery, ונגדיר שאנחנו רוצים לפנות למאפיין שנקרא דיספליי ולהכניס לתוכו את הערך בלוק.

  19. 07:05

    וזה יגרום להצגה של התמונה. מה אנחנו רוצים לעשות במידה ויש כישלון? במידה ויש כישלון אנחנו יכולים לדוגמה להציג איזשהו אלרט של ארור ונציג את ההודעה עצמה שמתקבלת.

  20. 07:30

    הדבר האחרון שאנחנו צריכים לספק זה איזשהו פרמטר שהוא אובייקט ג'ייסון, שמחזיק לנו את הערכים הבאים דבר ראשון הquality מה האיכות של התמונה בואו ניתן לו 50 אמור להיות בין 0 ל-100 ואנחנו נותנים לו כזה ממוצע באמצע destination type זה יהיה navigator camera destination type שימו

  21. 08:04

    לב על די גדולה ואנחנו פונים לדאטה underline url זה בעצם מציין בייס 64 אנחנו עכשיו ציינו את האיכות של התמונה שאנחנו מעוניינים בה ושאנחנו רוצים לקבל אותה בבייס 64. מה היתרון לקבל תמונה כקידוד?

  22. 08:27

    כי אם יש לנו מחרוזת אנחנו יכולים לדוגמה לשלוח את המחרוזת הזאת לשרת כסטרינג רגילה לגמרי ואז בשרת לקבל ולשמור אותה באיזושהי תיקייה בצד של השרה. אוקיי, אז יש לנו בעצם גם פעולה לגבי הצלחה, זאת הפונקציה הזאת, גם פעולה לגבי כישלון, זאת הפונקציה הזאת, ואובייקט שמתאר בדיוק מה לעשות.

  23. 08:54

    בואו נריץ את זה. אוקיי, Take a picture. Allow the camera to use and display your location.

  24. 09:13

    כן, אנחנו רוצים. Allow. ואנחנו רואים עכשיו מעין טשטוש כזה או כל מיני צבעים בתור מצלמה.

  25. 09:24

    בתור מה בדיוק אנחנו רואים. למה אנחנו רואים את הדבר הזה? מפני שהאמולטור עצמו לא יכול לצלם באמת תמונה אמיתית.

  26. 09:35

    אז הוא אומר לנו, אני רק עושה לכם הדמיה כאילו זה מה שאני רואה דרך המצלמה. בואו תלחצו ותצלמו אותה.

  27. 09:42

    אנחנו לוחצים. אנחנו שומעים כזה צילום או שאנחנו אומרים לו תיקח אחת חדשה או אקספט. בואו נלחץ על אקספט. הנה האלרט שמציג לנו את כל המחרוזת בואו נעשה אוקיי והנה התמונה שצילמנו.

  28. 10:04

    ניקח עוד אחת נצלם נעשה

לקורס המלא: קורס PhoneGap אונליין

ההרצאה הקודמת: מצפן - Compass

ההרצאה הבאה: אנשי קשר בטלפון

הרצאות קשורות מקורסים אחרים

  • שימוש ב-useEffect - חלק 1
  • שימוש ב-NuGet
  • שימוש ב-ModelState
  • בדיקות מקרי שימוש

קורסים נוספים במסלול

  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס פיתוח אפליקציות - לאנדרואיד - Android - ב-JAVA
  • קורס פיתוח אפליקציות - לאייפון iPhone iOS - ב-Swift-Xcode
  • קורס פלאטר - Flutter - שפת DART של גוגל למובייל - פיתוח אפליקציות לאנדרואיד ואייפון