Formula untuk mengetahui hasil warna setelah menerapkan x% opacity ke dalamnya?


10

Saya punya 2 warna

  1. #a1a2a4
  2. hitam ( #000000)
  3. 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?



Saya sedikit bingung dengan kata-kata Anda: Anda ingin grayyang paling dekat dengan warna yang ditentukan, benar?
horatio

Jawaban:


6

Kasing ini lebih atau kurang sederhana (Anda berurusan dengan hitam dan putih).

Setelah menerapkan warna (# a1a2a4), periksa level RGB:

Tingkat 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.


4

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.)


Itu beberapa geekage yang benar-benar seksi di sana. 8)
Lauren-Clear-Monica-Ipsum

3
Wah terima kasih! [menyesuaikan pelindung saku, memastikan pena ditempatkan dengan merata>
Alan Gilbertson

0

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.


Anda benar, tetapi ada banyak cara yang lebih geekier untuk melakukannya. 8-D
Alan Gilbertson

0

Dengan warna latar depan dan latar belakang (nilai seragam di seluruh saluran R, G, dan B), Anda tidak dapat mencapai warna yang tidak seragam #a1a2a4dengan mengubah opacity karena opacity memengaruhi semua saluran sekaligus. Namun, Anda dapat mencapai warna "cukup dekat" #a1a1a1dengan mengatur opacity hitam menjadi 0.37. Inilah alat yang saya gunakan:

http://colorizer.org/

  1. Klik "Latar Belakang" dan atur nilai hex ke #fff
  2. Klik "Tombol" dan atur nilai hex ke #000
  3. Gunakan utilitas pipet untuk menemukan warna target pada spektrum "Alpha / Opacity", lalu klik pada spektrum untuk mendapatkan nilai opacity.

0

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

M=[-0.316438695251802233798084520470 -0.0205011495462359668020633451463 -0.627769626184202308338411657855 
    4.83088877248122926488562947487 -0.673109830626855247075257552051 0.137681159420289855072463768116]
[2.67597831835520455938498494132 0.215715090307662822540065922133 1.69848459052630338054958974280 -13.9750196437925615505500261925 
    3.20021608171817705605028810915 -0.370471014492753623188405797101]
[-6.62632375526968419148486246260 0.509833585674322977062528534400 -3.14436345482363613544439381045 35.0629474419416797625283743688
    -6.69242186135847738781211803779 1.41304347826086956521739130435]
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.