Acest post este disponibil și în: Engleză
caracteristică Screen Capture, sau, pur și simplu, „îndepărtarea imaginii de pe ecran“, într-o aplicație mobilă este un instrument auxiliar puternic și poate fi utilizat într-o mare varietate de sarcini. În acest articol considerăm în detaliu mecanismele disponibile pentru a pune în aplicare această funcționalitate.
Cu ajutorul imaginilor sau a înregistra ceea ce se întâmplă pe ecran, puteți crea o conducere confortabil, instruirea utilizatorilor să lucreze cu aplicații complexe. Eficiența tutoriale care arată în mod clar utilizatorul exact cum să utilizeze funcționalitatea de aplicare este mult mai mare în comparație cu text simplu „Tutoriale“ animate. erori de sprijin și aplicarea de corecții pot fi simplificate în mod considerabil în cazul în care, împreună cu un mesaj de eroare utilizatorul poate trimite o înregistrare a acțiunilor care duc la accident. În cele din urmă, mulți jucători sunt adesea folosite pentru a înregistra ecran pentru a crea linii directoare pentru trecerea nivelurilor, sau pentru a demonstra realizările lor.
Activați și dezactivați UIGetScreenImage
Această funcție are un singur dezavantaj, și dacă el nu ar fi, ea ar fi fost, probabil, cea mai bună soluție pentru a lua capturi de ecran. Dezavantajul este că funcția este parte a API-ului privat, ceea ce înseamnă că orice aplicație care-l folosește, nu poate intra în App Store și accesul la dispozitivele utilizatorilor.
Procesul întâi. Rendering strat UIView
Primul element din listă merge metoda de clasa CALayer pentru a prelua conținutul unui strat ca imagine - o metodă
Folosind această metodă, în scopul de a captura de ecran descris în AC QA1703 pe site-ul Apple. Această metodă stochează pur și simplu conținutul unui strat la contextul grafic curent, atunci contextul poate fi stocate direct acolo imagine. Prin urmare, pentru orice UIView, puteți face o fotografie din patul lui.
Mai jos este un exemplu de cod care poate fi folosit pentru a obține imagini ale UIView.
Astfel, prima soluție propusă este cel mai general, dar nu universale. Acesta va lucra pentru o interfață construită în UIKit, dar cu elemente din anexa la GPU, o captură de ecran va conține un câmp gol.
Procesul pentru al doilea. Pregătirea imaginii OpenGL ES
După cum sa menționat deja, conținutul scenei OpenGL este în memoria GPU. Prin urmare, în scopul de a obține o captură de ecran a ferestrei care afișează o scenă grafic, creat cu cadrul OpenGL ES, necesită o metodă diferită. O astfel de metodă este descrisă în AC QA1704. Această funcție glReadPixels.
Următorii pași trebuie să fie făcut pentru a obține imagini scena OpenGL.
- Până la tamponul de redare dorit (dacă se utilizează mai multe) prin intermediul funcției glBindRenderbufferOES.
- Aloca memorie pentru dimensiunea dorită a imaginii, având în vedere că fiecare punct de imagine este dată de 4 octeți.
- Copiați pixelii de imagine din zona de memorie alocată prin apelarea funcției glReadPixels.
- Pentru a anunța „sursă de date“ de selecție prin funcția link-ul sursă CGDataProviderCreateWithData.
- CGImage primesc de la o sursă de date prin intermediul funcției CGImageCreate.
Codul illyustriruschy secvență descrisă de apeluri este listat mai jos.
Având CGImage, puteți obține cu ușurință imaginea UIImage și apoi să-l utilizați pentru propriile lor scopuri. Trebuie reamintit faptul că OpenGL ES sistem de coordonate și UIKit diferă în direcția axei Y. Prin urmare, captură de ecran înainte de utilizare Flip.
A treia cale. Aparat foto Dispozitiv Imagine
Ce avem în cele din urmă?
Există cel puțin două abordări pentru rezolvarea acestei probleme. Utilizarea lor depinde de player-ul.
Eliminarea imaginilor jucător MPMoviePlayer
- (UIImage *) thumbnailImageAtTime: timeOption.
descrierea acestuia pot fi găsite în documentația oficială. Acesta vă permite să setați timpul corespunzător cadrului dorit, și de a determina ce imagine veți obține este mai important - cel mai aproape de momentul dorit de keyframe sau rama exactă pentru un timp dat. Apelarea acestei metode - tot ce trebuie să faci pentru a obține o captură de ecran.
Eliminarea imaginilor jucător AVPlayer
Prima modalitate - de a utiliza clasa AVAssetImageGenerator. Acesta conține o metodă specială
Exemplu de cod care ilustrează această abordare este prezentată mai jos.
Problema cu HTTP Live Streaming
În acest articol vom încerca să descrie metode pentru a captura de ecran, disponibile pentru utilizare în iOS.
Sperăm că ați învățat o mulțime de informații utile din articolele noastre și să găsească răspunsuri la întrebările dvs. despre Captură de ecran în iOS.object