πηγή εικόνας

Android Color Management: Τι πρέπει να γνωρίζουν οι προγραμματιστές και οι σχεδιαστές

Στην πρόσφατη έκδοση του Oreo, το Android απέκτησε αρχική υποστήριξη για τη διαχείριση χρωμάτων - η οποία βοηθά στην αντιστοίχιση των εξερχόμενων χρωμάτων σε όλες τις συσκευές. Με την ενημέρωση, οι συσκευές Android μπορούν πλέον να εμφανίζουν χρώματα έξω από το φάσμα χρωμάτων sRGB. Εάν δεν είστε εξοικειωμένοι με τα προφίλ χρωμάτων ή με τις ευρείες γκάμα χρωμάτων, προτείνω ιδιαίτερα αυτό το βίντεο από το Google I / O για την κατανόηση του χρώματος:

tl; dw; η διαχείριση χρωμάτων διασφαλίζει ότι τα χρώματα φαίνονται τα ίδια σε διαφορετικές οθόνες. Για παράδειγμα, το χρώμα # ff0000 (καθαρό κόκκινο για όσους δεν διαβάζουν δεκαεξαδικούς κωδικούς) μπορεί να εμφανιστεί διαφορετικά ανάλογα με την τεχνολογία της οθόνης που δείχνει - ορισμένες οθόνες είναι σε θέση να εμφανίζουν περισσότερα κορεσμένα ή έντονα χρώματα από άλλα. Ο λόγος # ff0000 στο sRGB ορίζει μια συγκεκριμένη απόχρωση του κόκκινου χρώματος (στο χώρο χρώματος sRGB), ώστε οι χρωματισμένες οθόνες να παράγουν το επιθυμητό χρώμα.

Σε αυτήν την ανάρτηση, θα ήθελα να περιγράψω τι σχεδιαστές εφαρμογών Android και προγραμματιστές πρέπει να γνωρίζουν σχετικά με αυτές τις αλλαγές.

Εμφανίζει ευρείες γκάμες χρωμάτων

Οι εικόνες μπορούν να ενσωματώσουν ένα προφίλ χρωμάτων, δηλώνοντας το χώρο χρώματος των πληροφοριών χρωμάτων τους. Ομοίως, πολλές κάμερες είναι σε θέση να καταγράφουν ευρείες χρωματικές κλίμακες και να ενσωματώσουν ένα κατάλληλο προφίλ χρωμάτων. Αυτό τους επιτρέπει να εμφανίζουν χρώματα πέρα ​​από την τυπική γκάμα sRGB. Για να προβάλλετε εικόνες με ευρεία προφίλ χρωμάτων στην εφαρμογή σας, πρέπει να επιλέξετε τη δραστηριότητα ανά δραστηριότητα. Για να το κάνετε αυτό, ορίστε το χαρακτηριστικό colorMode στη δήλωση δραστηριότητας στο δηλωτικό της εφαρμογής σας:

<δραστηριότητα
  android: όνομα = ".WideColorActivity"
  android: colorMode = "wideColorGamut" />

Μπορείτε επίσης να ρυθμίσετε αυτό το πρόγραμμα, αλλά πρέπει να το κάνετε κατά τη διάρκεια της onCreate πριν δημιουργηθεί το παράθυρό σας. Η υποστήριξη ευρείας γκάμας χρωμάτων είναι opt-in καθώς απαιτεί περισσότερους πόρους του συστήματος (κάτι που μπορεί να έχει ως αποτέλεσμα μείωση της απόδοσης στην εφαρμογή σας):

"Όταν είναι ενεργοποιημένη η λειτουργία ευρείας γκάμας χρωμάτων, το παράθυρο της δραστηριότητας χρησιμοποιεί περισσότερη μνήμη και επεξεργασία GPU για τη σύνθεση της οθόνης. Προτού ενεργοποιήσετε τη λειτουργία ευρείας γκάμας χρωμάτων, θα πρέπει να εξετάσετε προσεκτικά εάν η δραστηριότητα επωφελείται πραγματικά από αυτήν. Για παράδειγμα, μια δραστηριότητα που προβάλλει φωτογραφίες σε πλήρη οθόνη είναι καλός υποψήφιος για λειτουργία ευρείας γκάμας χρωμάτων, αλλά μια δραστηριότητα που εμφανίζει μικρές μικρογραφίες δεν είναι "- τεκμηρίωση προγραμματιστή

Λάβετε υπόψη ότι εάν χρησιμοποιείτε μια ενιαία αρχιτεκτονική δραστηριότητας, τότε μπορεί να έχει νόημα να ξεσπάσετε την εμφάνιση ευρείας γκάμας χρωμάτων σε μια νέα Δραστηριότητα.

Ακολουθεί ένα παράδειγμα που δείχνει δύο δραστηριότητες που εμφανίζουν την ίδια μεγάλη εικόνα δοκιμής γκάμας χρώματος (ένα PNG με ενσωματωμένο προφίλ χρώματος εμφάνισης P3), η κορυφαία δραστηριότητα δηλώνει μια ευρεία χρωματική χρωματική λειτουργία, το κάτω μέρος δεν είναι.

Οι δραστηριότητες που εμφανίζουν ευρεία περιεκτικότητα σε χρωματικά χρώματα πρέπει να ενεργοποιηθούν σε ευρεία λειτουργία χρώματος (επάνω)

Χρώμα ακριβής απόδοση

Πολλές συσκευές Android είχαν οθόνες που μπορούν να εμφανίσουν ευρύτερες χρωματικές γκάμες για αρκετό καιρό. Πριν από τη διαχείριση χρώματος του Android 8.0, όλο το περιεχόμενο υποτίθεται ότι είναι sRGB, αλλά οι ευρείες χρωματικές ενδείξεις θα ερμηνεύσουν ξανά τις χρωματικές τιμές στη γκάμα τους και θα "τεντώσουν" τα χρώματα. Αυτό κάνει τα κόκκινα κόκκινα κόκκινα, πράσινα πιο πράσινα κλπ. Οδηγώντας σε πιο κορεσμένη εμφάνιση. Ωστόσο, αυτό το τέντωμα είναι ασαφές και δεν υπάρχει τρόπος να υπολογίσουμε το αποτέλεσμα τεντώματος, εξ ου και τα αποτυπωμένα χρώματα δεν είναι ακριβή.

Πολλές εφαρμογές έχουν αποκομίσει τα περιουσιακά στοιχεία τους για να αντισταθμίσουν αυτό το τέντωμα. Κατά συνέπεια, τα χρώματα ενδέχεται να εμφανίζονται σίγαση όταν εμφανίζονται σε συσκευές με βαθμονομημένες οθόνες. Αυτό συμβαίνει σε συσκευές με ακρίβεια χρώματος, όπως το Pixel 2, τα αποκομμένα στοιχεία ενεργητικού θα εμφανίζονται λιγότερο ζωντανά από ό, τι σε μη ακριβείς οθόνες. Μόλις γίνει η απόδοση των χρωμάτων με ακρίβεια, οι κατασκευαστές εφαρμογών μπορούν να σταματήσουν να αλλάζουν στοιχεία και να είναι σίγουροι ότι το περιεχόμενό τους εμφανίζεται όπως προβλέπεται. Μέχρι τότε, ωστόσο, υπάρχουν ορισμένα βήματα που μπορείτε να λάβετε για να διασφαλίσετε ότι το περιεχόμενό σας θα φανεί εξαιρετικό τόσο στις οθόνες ακρίβειας χρώματος όσο και στις συσκευές που δεν διαχειρίζονται χρώματα.

Το Android 8.0 προσθέτει έναν νέο προσδιοριστή πόρων broadcg, τον οποίο μπορείτε να χρησιμοποιήσετε για να αλλάξετε χρώματα σε συσκευές των οποίων η οθόνη έχει ευρεία γκάμα χρωμάτων και υποστηρίζεται ευρεία γκάμα χρωμάτων (επίσης τώρα και για το αντίστροφο).

Σημειώστε ότι η υποστήριξη ευρείας κλίμακας χρωμάτων διαφέρει από το εάν η τρέχουσα δραστηριότητα εκτελείται σε λειτουργία χρώματος wideColorGamut. Αυτός είναι ο συγκεκριμένος προσδιοριστής που θα εφαρμοστεί αν η συσκευή υποστηρίζει έγχρωμη ακρίβεια απόδοση, ανεξάρτητα από το αν η δραστηριότητα εκτελείται σε ευρεία λειτουργία χρώματος.

Για παράδειγμα, μια εφαρμογή μπορεί να δηλώσει μια βασική παλέτα χρωμάτων στα res / values ​​/ colors.xml:


 # 5bc3cc 
 # 302c54 
 # c7416b 
 # e37b5b 
 # ffd64f 

... και ένα εναλλακτικό σύνολο σε res / values-widecg / colors.xml:


 # 36c1cd 
 # 251f55 
 # c8144e 
 # e4572e 
 # ffc914 
Παρέχετε διαφορετικά χρώματα που πρέπει να χρησιμοποιηθούν για την ακριβή χρώση (αριστερά) και τις παλιότερες συσκευές

Μπορείτε να χρησιμοποιήσετε την ίδια τεχνική με στοιχεία ράστερ (π.χ. res / drawable-widecg-mdpi / foo.png), αλλά αυτό θα απαιτήσει αποστολή σχεδόν διπλών στοιχείων, ώστε να μην αξίζει τον κόπο να αυξήσετε το μέγεθος της εφαρμογής σας. Εξετάστε τη μετάβαση σε στοιχεία φορέα που μπορούν να χρωματιστούν δυναμικά.

Ευρύτερη υποστήριξη έρχεται

Παρόλο που ανακοινώσαμε πρόσφατα σχέδια για την προσθήκη ενός νέου χρώματος "κορεσμένου" χρώματος, επιτρέποντας στους χρήστες να επιλέξουν να αποχωρήσουν από την απόδοση των χρωμάτων με ακρίβεια (δηλ. Να ενεργούν σαν συσκευές τώρα), εξακολουθώ να πιστεύω ότι είναι σημαντικό να ενημερώσετε τις εφαρμογές σας για έναν κόσμο με διαχείριση χρωμάτων. Ενημερώνοντας τις εφαρμογές σας για να υποστηρίξετε καλύτερα την ακριβή απόδοση του χρώματος, λιγότεροι χρήστες θα αισθανθούν την ανάγκη να εξαιρεθούν από αυτήν τη λειτουργία. Σχεδιάζουμε να συνεχίσουμε να επενδύουμε σε ευρεία υποστήριξη χρωμάτων. προσθέτοντας περισσότερη επιφάνεια API για εργασία με ευρεία γκάμα χρωμάτων σε μελλοντικές εκδόσεις (όπως ενημερωμένα API χρωμάτων και καμβά που δέχονται χρώματα με μεγαλύτερη ακρίβεια δυαδικών ψηφίων).

Η πραγματικότητα των σύγχρονων οθονών είναι ότι οι σχεδιαστές και οι προγραμματιστές πρέπει τώρα να έχουν μια κατανόηση της διαχείρισης χρωμάτων και πώς να την εφαρμόσουν μέσα στην εφαρμογή τους. Καθώς περισσότερες συσκευές πλοίων διαθέτουν ευρείες οθόνες και ακριβή απόδοση χρωμάτων, είναι σημαντικό να προχωρήσετε στο κύμα και να ενημερώσετε τις εφαρμογές σας για να προσφέρετε την καλύτερη εμπειρία. Θεωρούμε ότι αυτό είναι ο καλύτερος τρόπος να παραδώσει μια μεγάλη εμπειρία στους χρήστες σας, όπου τα χρώματα που βλέπουν είναι εκείνα που σκοπεύατε.

Σχετική ανάγνωση

  • Ένα μεγάλο αστάρι στη διαχείριση χρωμάτων
  • Ευρεία οδηγός περιεχομένου χρώματος
  • Τεκμηρίωση του Android ColorSpace, κοινόχρηστοι χώροι χρωμάτων
  • Η εμπειρία της Instagram υλοποιώντας ευρύχρωμο χρώμα στο iOS
  • Αίσθηση της διαχείρισης χρωμάτων