Saya punya 2 warna
#a1a2a4
- hitam (
#000000
) - putih (
#ffffff
)
Sekarang saya perlu tahu berapa banyak opacity (dalam persen) yang harus saya terapkan pada warna kedua (hitam) dengan latar belakang warna ketiga (putih) untuk mencapai warna "paling dekat" (sebagaimana ditentukan oleh mata) ke yang pertama. warna ( #a1a2a4
).
Bagaimana cara saya melakukannya?
color
transparency
Pacerier
sumber
sumber
gray
yang paling dekat dengan warna yang ditentukan, benar?Jawaban:
Kasing ini lebih atau kurang sederhana (Anda berurusan dengan hitam dan putih).
Setelah menerapkan warna (# a1a2a4), periksa level RGB:
Anda dapat melihatnya memiliki kira-kira 162 (rata-rata), dan mengetahui bahwa itu bisa berubah dari 0 hingga 255, Anda hanya perlu mengetahui persentasenya:
162 * 100/255 = ~ 63,5%
Sekarang, karena RGB bekerja dengan cara yang berlawanan dibandingkan dengan CMYK (dalam hal pencampuran warna, yaitu campuran warna penuh berarti putih dan dengan campuran warna penuh CMYK berarti hitam), persentase sebenarnya dalam kasus ini adalah perbedaan antara 100% dan nilai yang kami dapatkan:
100 - 63,5 = 36,5%
Jadi jika Anda menerapkan 36% opacity, ini akan memiliki warna ini, saya baru saja mengujinya.
Tentu saja dalam kasus-kasus dengan warna yang lebih kompleks, metode ini tidak berfungsi dan saya tidak tahu cara mendapatkan persennya, saya akan melakukan trial and error klasik.
sumber
Pertanyaannya, jika saya memahaminya dengan benar, adalah "Bagaimana Anda menghitung ini secara terprogram?" Ini matematika langsung untuk mengubah "warna" target Anda menjadi nilai alpha.
Putih == [1,1,1] atau #ffffff atau 255.255.255, tergantung pada aplikasi Anda. Hitam == [0,0,0], dll.
Jadi: menormalkan nilai target (dalam hal ini, itu 0,6314), kurangi dari 1, dan terapkan ke lapisan hitam sebagai nilai alfa. Anda dapat melakukan ini satu saluran pada satu waktu, dan rata-rata hasilnya, tetapi mengapa repot-repot, karena warna Anda tidak dapat dibedakan (dengan mata) dari abu-abu netral # a1a1a1. (Segala sesuatunya menjadi lebih rumit jika ada rona yang terlihat, karena saluran kemudian akan memiliki nilai yang berbeda, tetapi prinsip yang sama berlaku.)
sumber
Varian coba-coba yang sedikit lebih cepat:
Buat warna hex Anda di Photoshop dalam dokumen CMYK dan lihat nilai-nilai CMYK. Saya mendapatkan 39/32/31/1.
Buat dua lapisan, bagian atas hitam dan bagian bawah putih.
Tarik ke atas jendela Info. Secara terpisah, tarik ke atas jendela Layers.
Bermain dengan opacity dari lapisan hitam. Gunakan pipet di atas warna Anda dan periksa di jendela info untuk melihat seberapa dekat Anda. Ini sebagian besar menghemat waktu Anda dari perubahan opacity - ratakan - periksa warna - membatalkan ratakan.
sumber
Dengan warna latar depan dan latar belakang (nilai seragam di seluruh saluran R, G, dan B), Anda tidak dapat mencapai warna yang tidak seragam
#a1a2a4
dengan mengubah opacity karena opacity memengaruhi semua saluran sekaligus. Namun, Anda dapat mencapai warna "cukup dekat"#a1a1a1
dengan mengatur opacity hitam menjadi0.37
. Inilah alat yang saya gunakan:http://colorizer.org/
#fff
#000
sumber
Menemukan formula ini adalah latihan yang bagus dalam aljabar linier. Menggunakan RGB dan aljabar linier saya datang dengan matriks ini M. Jika Anda ingin menggabungkan RGBred = (237,32,36) dan RGBblue = (60,84,165) di mana lapisan bawah adalah opacity 100% dan lapisan atas adalah 50% opacity kemudian gandakan Mv di mana M adalah matriks di bawah ini dan v = (237,32,36,60,84,165). Kami mendapatkan Mv = (157.777,71.444.107.444).
Nilai aktualnya adalah (159,71,103) jadi kami cukup dekat tetapi ada beberapa kesalahan - mungkin karena saya menggunakan nilai bulat untuk menghitung M dan / atau karena mungkin tidak menggunakan RGB tetapi skala lain untuk menghitung transparansi perataan. Saya mungkin bisa mendapatkan matriks yang lebih akurat menggunakan pendekatan tipe kuadrat tapi saya terlalu malas.
Matriks yang didapat MI adalah
sumber