הבנה של Core Image

Core Image היא מסגרת עיבוד תמונות ביצועים גבוהה של Apple המספקת אוסף עשיר של מסננים מובנה, התאמות צבע, ואימות פעולות.זה ממנף את GPU האצה לספק ביצועים בזמן אמת, מה שהופך אותו אידיאלי לבניית יישומים עריכת תמונות רציונאליים ב- iOS.המסגרת משתלבת הדוק עם UIKit, Swift, Metal, כלומר אתה יכול לבנות ניסיון נוזלי עם תצוגה מקדימה והתאמה אישית.

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

הגדרת סביבת הפיתוח שלך

כדי להתחיל לפתח את אפליקציית העריכה של התמונה שלך, להתחיל על ידי התקנת הגרסה העדכנית ביותר של Xcode מ- Mac App Store. ליצור פרויקט חדש על ידי בחירת תבנית iOS App, בחר סוויפט כשפת התכנות, ובחר עבור Storyboard או Swift כיוצר ממשק בהתאם להעדפות שלך. ברגע שהפרויקט שלך נוצר, לייבא את מסגרת התמונה Core בקבצים שבהם אתה מבצע עיבוד תמונה:

(ב) .

ייתכן גם שיהיה צורך לייבא מסגרות אחרות כגון FLT:4 עבור רכיבי UI, (FLT:5) עבור גישה לספריית הצילום, ו-FLT:6 אם אתה מתכנן להשתמש האצה חומרה או ליצור מסננים המבוססים על מתכת מותאם אישית.

התקנת תלות

אם אתה מתכנן להרחיב את הליבה עם מסננים מותאמים אישית או לשלב ספריות צד שלישי עבור פונקציונליות נוספת, לשקול באמצעות Swift Pack Manager או CocoaPods. עם זאת, עבור רוב משימות עריכת תמונות סטנדרטיות, מסננים בנוי של Core Image הם מספיק. היכרות עם ממשק Xcode, כולל קטלוג הנכסים לניהול משאבי תמונה ואת לוח התכנון עבור הנחת ממשק המשתמש.

עיצוב ממשק המשתמש

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

שקול באמצעות UICollectionView או SwiftUI LazyVGrid כדי להציג את האגודלים המסננים.כל אחד אצבעני מראה תצוגה מקדימה של התמונה עם מסנן המתאים, נותן למשתמשים התייחסות חזותית מהירה. השתמש UISlider או SwiftUI עבור התאמות פרמטר כגון אינטנסיביות, בהירות, או ריצוף. A UIStepper יכול לשמש עבור התאמות מהירות כגון סיבובים כדי להחזיר את התמונה המקורית כדי לשחזר את כפתור זה.

המונחים:

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

הוספת תמונה

כדי לאפשר למשתמשים לבחור תמונות מהספריית הצילום שלהם, להשתמש ב-FLT:8 או החדש יותר (FLT:9 (הופנה מהדף iOS 14) FLT:10 מציע API מודרני, סינכרוני המכבד פרטיות משתמשים ותומכת במבחר רב.

(ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

[01: 51]

כאשר המשתמש בוחר תמונה, לטעון את נתוני הנכס וליצור תמונה UI. להמיר את התמונה הזו ל- CIImage באמצעות FLT:12 כדי להתחיל עיבוד.עבור תמונות שנלקחו ישירות מהמצלמה, השתמש ב-FLT:13

עבודה עם CIImage and the Image Processing Pipeline

Core Image פועל על אובייקטים (FLT:14), אשר הם ייצוגים בלתי-מוגדרים של תמונות. A CI תמונה ניתן ליצור מתוך UI Image, כתובת URL קובץ, נתוני פיקסל גולמי, או אפילו שנוצר באופן מתודולוגי. צינור עיבוד התמונה עוקב אחר השלבים הבאים:

  1. (ב) ,0) ,9.
  2. (ב) ,0)Fiter chain:FLT:1 Apply אחד או יותר אובייקטים CIFiter ל- CI Image. כל מסנן משנה את התמונה בהתבסס על הפרמטרים שלו.
  3. (ב) ,0) ,Context Rendering:FLT:1 השתמש ב- CIContext כדי להפוך את התפוקה הסופית CIתמונה לתוך CG תמונה או מרקם מתכת.
  4. (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

הנה דוגמה ליצירת תמונת CI של UI תמונה ולהציג אותה:

(ב) .

על ידי שמירה על CI Image כמו אובייקט העבודה, אתה יכול מסננים שרשרת ללא עריכת ביניים, שמירה על ביצועים ואיכות תמונה.

הבנה CIContext

ה-FLT:16 הוא המנוע ל- Core Image.It מנהלת משאבי GPU או CPU ומבצע את עיבוד פיקסל בפועל.

(ב) .

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

שימוש ב- Core Image Filters

מקור תמונה מספקת עשרות מסננים המקובצים בקטגוריות כגון התאמת צבע, Blur, Distortion, Stylize ו- Transition.כל מסנן מזוהה על ידי שם מיתר כגון FLT 18 או FLT:19 כדי ליישם מסנן, לעקוב אחר השלבים הכלליים האלה:

  1. יצירת דוגמה ל-SeuFiter באמצעות FLT:20
  2. תגדירו את התמונה באמצעות .
  3. הגדר פרמטרים ספציפיים באמצעות המפתחות המתאימים כגון: 22, או מפתחות מותאמים אישית.
  4. החזרת הפלט של ה-Seu Image מהנכס של ה-FLT:24

(ב) ,0) ,(הופנה מהדף התגלות)

(ב) 25

לאחר קבלת הפלט CI Image, להפוך אותו ל- CG תמונה באמצעות CIContext:

[22: 26]

Commonly Used Filters for Photo Editing

  • (ב) ,0) ,(ה) , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ⁇ :0(CIPhotoEffect Noir: FIRLT:1) הופך למראה שחור-לבן גבוה.
  • (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ויקרא י"ד: "ה' י"א ירא" (בראשית כ"ד)
  • (ב) ויקרא י"א: ויקרא י"ד: "וַיֹּאמֶר עַמֶר עַמֶר עַמֶר עַמְתָּבְתָּבְתָּבְתָּבוּ" (בראשית כ"ד, ט).
  • (ב) ,0) ,(ה) ,(ה) , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ויקרא י"א: ויקרא י"ד: "וַיְּבְתָּבְתָּבְתָּבְתָּבְתָּבְתָּבָר" (בראשית כ"ד, ט).

לרשימה מלאה של מסננים זמינים, להתייעץ עם ה-FLT:0 (איור:0) תיעוד של תיעוד של אפל:1 על אתר המפתח של אפל.ניסוי עם מסננים שונים כדי להבין את ההשפעה החזותית שלהם ואת טווח הפרמטרים שלהם.

בניית מערכת Preview

כדי לאפשר למשתמשים לגלוש מסננים באופן חזותי, ליצור תצוגה מקדימה של אגודל עבור כל מסנן. Downsample את התמונה המקורית בגודל קטן יותר (למשל, 200x200 נקודות) וליישם את המסנן לגרסה המרשימה.אחסן את התמונה המתקבלת במערך ולהציג אותה בתצוגת אוסף. גישה זו מספקת משוב מהיר ללא צורך בזיכרון או עיבוד מופרז.

המונחים: Multiple Filters

עריכת תמונות של העולם האמיתי לעתים קרובות דורש יישום התאמות מרובות ברצף. Core Image תומך מסנן שרשרת על ידי האכלה של מסנן אחד כמו קלט אחר. כי CI תמונה הוא לא משתנה, אתה יכול מסננים שרשרת ללא תופעות לוואי.

(ב) ⁇ (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

(ב) .

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

יצירת עריכת פורמולציה לא-Destructive Editing Pipeline

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

ניסיון משתמש עם בקרה אינטראקטיבית

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

דוגמה:0 (Real-Time Slider: FLT:1)

[22: 29]

עבור שיטת ההרחבה , להפוך את שרשרת המסנן לדימוי CI מופץ ועדכון UI ImageView על החוט הראשי. השתמש ב- throttling או debouting כדי למנוע שכפול מופרז כאשר המפרק נע במהירות.

המונחים: Gestures

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

אופטימיזציה

ביצועים הם קריטיים עבור חווית עריכה חלקה של צילום. Core Image הוא GPU-accelerated, אבל שימוש לא יעיל עדיין יכול לגרום lag, במיוחד עם תמונות ברזולוציה גבוהה של אייפון מודרני.

  • (ב) ,0) השתמש בקונטקסט אחד: ההרחבה 1 (בשיתוף מספר מקרי CIContext היא יקרה.
  • (FLT:0)Lownsample for Preview:FLT:1 במהלך עריכה חיה, החל מסננים לגרסה מפוספסת של התמונה (למשל, 1024px בצד הארוך ביותר) Render את התמונה המלאה ברזולוציה רק כאשר המשתמש חוסך או ייצוא.
  • (FLT:0)Render in רקע חוטים:FLT:1 פעולות צילום Core הם בטיחות חוט. בצע ביצוע תור רקע סדרתי ושלח עדכונים UI לתור הראשי.
  • (ב) ,0) ,Use Metal for Makeing: FLT:1 צור את CIContext עם מכשיר מתכת כדי למנף את האצה GPU: FLT:41 .
  • (ב) [15] מהדורות של פילטרים: ⁇ 1:51) לתצוגה מקדימה בזמן אמת, לשמור על שרשרת המסנן קצרה.אם המשתמש מתייחס לפילטרים רבים, שקול לאחד אותם למחלקה אחת של FLT:42 אשר מבצעת פעולות מרובות במעבר אחד.
  • (FLT:0)Profile with Instruments:FLT:1ir השתמש בכלי ה- Instruments של Xcode כדי לזהות צווארי בקבוק ביצועים.תבנית Core ו- GPU מסייעות לדמיין ביצועים.

ניהול זיכרון

אובייקטים של CI Image יכולים להחזיק אזכורים של תמונות גדולות של תמונות buffers. לשחרר אובייקטים של CIImage שאינם נדרשים עוד על ידי הגדרתם ל-nil. השתמש בריכות אוטומטיות בלולאות הדוקות כדי לשמור על השימוש בזיכרון תחת שליטה.עבור תמונות גדולות מאוד, לשקול אריחים לעשות שימוש (FLT:43) כדי לעבד את התמונה ב אריחים.

תכונות מתקדמות

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

« « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « «

השתמש ב-FLT:44 כדי ליישם את היבולים, לסיבוב, ליישם את ה-FLT:45 או להשתמש ב-FLT:46 עבור סיבובים פשוטים של 90 מעלות, לספק מדריכים חזותיים כגון מלבן רשת וצמח יבול שניתן לחזר.

התאמת צבע קורטס ורמות

מקור תמונה מספקת [15] ו-FLT:48 לדירוג צבע מתקדם.פילטרים אלה מקבלים נקודות שליטה המגדירות את עקומות צבע מותאמות אישית, נותן למשתמשים מנוסים שליטה על טווח הטונים של התמונה.

זיהוי פנים ושיפור

Integrate (FLT:49) עבור זיהוי פנים.לאחר שפרצופים מזוהים, אתה יכול ליישם התאמות מקומיות כגון תיקון עור חלקה, עיניים אדומות, או auto-enhancector מספק גבולות לכל פנים, אשר אתה יכול להשתמש כדי ליישם מסננים רק לאזורים ספציפיים.

חיסכון ויצוא

לאחר שהמשתמש משלים את העריכה, שמור את התמונה לספריית הצילום באמצעות אספקת אפשרויות לייצא בפורמטים שונים (JPEG, PNG, HEF) והחלטות. השתמש ב-FLT:51 או FLT:52 כדי לכתוב את נתוני התמונה.

בדיקת האפליקציה שלך

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

מסקנה

בניית אפליקציה לעריכה תמונה עם Core Image היא פרויקט מתגמל המשלב עיבוד תמונה, עיצוב UI ואופטימיזציה ביצועים. על ידי הבנת צינור הליבה Image, מינוף מסננים מובנה, שרשרת פעולות, וקידוד עבור ביצועים בזמן אמת, באפשרותך ליצור אפליקציה שמרגישה מקצועית ותגובה.התחל עם יסודות המפורטים כאן, ולאחר מכן הוא החל על תכונות ועיצוב כדי להתאים את החזון שלך עבור עוד, כדי לשלב את מסגרת התמונה: 1.FUID.