Ο καθρέφτης σας μόλις έπεσε από τον τοίχο και έσπασε σε χίλια κομμάτια - αλλά χρειάζεται ένας καθρέπτης να ξυρίσετε τη γενειάδα σας και να προσθέσετε κάποια καλλυντικά! Σας απομένουν 15 λεπτά πριν να προλάβετε το λεωφορείο για τη δουλειά. Τι μπορείτε να κάνετε;
Σε αυτόν τον οδηγό, θα φτιάξουμε ένα πρόγραμμα που επιτρέπει τη χρήση της ιστοκάμεράς σας ως καθρέπτη. Θα μάθετε πώς να:
Δημιουργήσετε μια εφαρμογή σε GTK+
Έχετε πρόσβαση στην ιστοκάμερά σας χρησιμοποιώντας GStreamer και πως να ενσωματώνετε το αποτέλεσμα σε ένα παράθυρο
Πάρετε φωτογραφίες με την ιστοκάμεράς σας
Θα χρειαστείτε τα παρακάτω για να μπορέσετε να ακολουθήσετε αυτό το μάθημα:
Ένα εγκατεστημένο αντίγραφο του Anjuta IDE
Εγκατεστημένα αντίγραφα του GTK, GStreamer και ένα μεταγλωττιστή Vala
Βασική γνώση μιας αντικειμενοστραφούς γλώσσας προγραμματισμού
Πριν ξεκινήσετε να προγραμματίζετε, πρέπει να δημιουργήσετε ένα καινούργιο έργο στο Anjuta. Έτσι θα δημιουργηθούν όλα τα απαραίτητα αρχεία που χρειάζονται για την εκτέλεση του κώδικα αργότερα. Επίσης θα ήταν χρήσιμο να τα κρατάτε όλα μαζί.
Ξεκινήστε το Anjuta και πατήστε
Επιλέξτε
Απενεργοποιήστε το
Βεβαιωθείτε ότι το
Πατήστε
using GLib;
using Gtk;
Ο κώδικας φορτώνει ένα (κενό) παράθυρο και το εμφανίζει. Περισσότερες πληροφορίες υπάρχουν πιο κάτω· προσπεράστε αυτή τη λίστα αν καταλαβαίνετε τα βασικά:
Οι δύο γραμμές using
εισάγουν χώρους ονομάτων έτσι ώστε να μην τους ονομάσουμε ρητά.
Ο κατασκευαστής της κλάσης Main
δημιουργεί ένα νέο παράθυρο και ορίζει τον τίτλο του. Κατόπιν εμφανίζεται το παράθυρο και ένα σήμα συνδέεται που εγκαταλείπει την εφαρμογή, εάν το παράθυρο κλείσει. Περισσότερα για τα σήματα αργότερα.
Η στατική συνάρτηση main
τρέχει από προεπιλογή όταν ξεκινάτε μια εφαρμογή Vala. Καλεί λίγες συναρτήσεις που δημιουργούν την κύρια κλάση, ρυθμίζουν και έπειτα εκτελούν την εφαρμογή. Η συνάρτηση Gtk.Main
ξεκινά τον κύριο βρόχο του GTK, που εκτελεί τη διεπαφή χρήστη και ξεκινά την ακρόαση για συμβάντα (όπως κλικ και πατήματα πλήκτρου).
Αυτός ο κώδικας είναι έτοιμος να χρησιμοποιηθεί, οπότε μπορείτε να τον μεταγλωττίσετε με κλικ
Αλλαγή της
Ο σκελετός πολυμέσων GStreamer είναι ικανός στο χειρισμό βίντεο από ιστοκάμερες. Ας προσθέσουμε το GStreamer στην εφαρμογή μας και έτσι μπορούμε να προσπελάσουμε το ρεύμα βίντεο.
using GLib;
using Gtk;
public class Main : Object
{
private Gst.Element camerabin;
public Main () {
this.camerabin = Gst.ElementFactory.make ("camerabin", "camera");
this.camerabin.set_state (Gst.State.PLAYING);
}
static int main (string[] args) {
Gtk.init (ref args);
Gst.init (ref args);
var app = new Main ();
Gtk.main ();
return 0;
}
}
Πρώτα ας αφαιρέσουμε το παράθυρο που δημιουργήσαμε πριν επειδή το GStreamer θα φροντίσει την εμφάνιση της εικόνας στην οθόνη.
Τώρα δημιουργούμε ένα στοιχείο GStreamer που προσπελάζει την ιστοκάμερά μας. Χρησιμοποιούμε το στοιχείο Camerabin, που είναι ένα στοιχείο κάμερας όλα σε ένα και μπορεί να παίρνει φωτογραφίες, βίντεο να εφαρμόζει εφέ και πολύ περισσότερα. Τέλειο για την περίπτωση χρήσης μας! Με τον this.camerabin.set_state (Gst.State.PLAYING)
λέμε στη διοχέτευση GStreamer που μόλις δημιουργήσαμε να ξεκινήσει το παίξιμο. Δεν είναι εύκολο;
Of course it is also possible to integrate the video more tightly into other windows but that is an advanced topic that includes some details of the X Window System we will omit here.
Μεταγλώττιση και τρέξιμο του πάλι. Θα καταλήξετε με δύο παράθυρα. Στο επόμενο βήμα θα ενσωματώσουμε το βίντεο στο παράθυρο GTK+.
Εάν έχετε προβλήματα με το μάθημα, συγκρίνετε τον κώδικά σας με αυτόν τον κώδικα αναφοράς. Υπάρχει επίσης μια πιο εκτεταμένη υλοποίηση που ενσωματώνει το παράθυρο σε ένα κανονικό Gtk.Window που εμπεριέχει μερικές προχωρημένες τεχνικές και προσθέτει κουμπιά για έναρξη/σταμάτημα της εικόνας.
Για να βρείτε περισσότερα για τη γλώσσα προγραμματισμού Vala ίσως θέλετε να ελέγξετε το μάθημα Vala.
Αυτό είναι, κατορθώσατε να δημιουργήσετε μια πλήρη εφαρμογή φωτογραφίας ιστοκάμερας σε 15 λεπτά. Τώρα μπορείτε να ξυριστείτε ή να προσθέσετε καλλυντικά στο όμορφό σας πρόσωπο, ακριβώς πριν να έχετε μια όμορφη ημέρα στη δουλειά σας, όπου μπορείτε να εντυπωσιάσετε τους φίλους σας και συναδέλφους σας με μια φοβερή εφαρμογή που μόλις κάνατε σε 15 λεπτά.