Konversi gambar skala abu-abu menjadi gambar saluran alpha di shell unix
14
Saya memiliki gambar skala abu-abu. Saya ingin mengubahnya menjadi PNG transparan, sehingga piksel hitam (dalam gambar asli) menjadi sepenuhnya buram, piksel putih menjadi sepenuhnya transparan, piksel abu-abu 50% akan menjadi 50% transparan, dan seterusnya untuk semua nuansa diantara.
Bagaimana saya bisa mencapai ini?
(Ya, saya tahu bahwa ini hampir pertanyaan yang sama dengan Mengubah nuansa grayscale ke saluran alpha , tapi saya ingin tahu bagaimana melakukan ini hanya dengan menggunakan alat baris perintah - mis. ImageMagick atau NetPBM.)
Berikut adalah contoh hasil dari pertanyaan yang disebutkan di atas. Sampel ini adalah hasil yang ingin saya capai hanya dengan menggunakan alat baris perintah.
Jika Anda membuka PNG ini di pemirsa yang mendukung transparansi, Anda akan mengerti maksud saya.
Ooookay. Setelah banyak googling, dan membaca lebih banyak dari manual ImageMagick daripada yang sebenarnya saya pedulikan, inilah jawabannya. Mengingat bahwa Anda memiliki gambar skala abu-abu yang dipanggil source.png, inilah perintah saya.
Untuk membuat piksel hitam transparan dan menjaga piksel putih apa adanya, jalankan perintah ini:
Mari kita jelaskan perintah terakhir itu sedikit lebih menyeluruh:
convert - Apakah perintah ImageMagic (salah satu dari beberapa)
source.png - Gambar sumber skala abu-abu.
-alpha copy - Salin konten file sebelumnya ke saluran alpha.
-channel alpha - Tetapkan bahwa operator berikut hanya akan memengaruhi saluran alfa.
-negate- Balikkan saluran alfa (akan, karena sebelumnya -chanel alphatidak mempengaruhi bagian lain dari gambar).
+channel- Menentukan bahwa operator berikut saja seharusnya akan mempengaruhi saluran warna, dan tidak lagi mengubah saluran alfa. (Ini adalah default, dan oleh karena itu kami tidak perlu memberikannya dalam contoh pertama, lebih sederhana.)
-fx '#000'- Ganti konten saluran warna dengan piksel hitam. (Karena +channelsaluran alpha tidak akan terpengaruh).
Sangat penting untuk memasukkan -fxopsi terakhir , jika tidak semua piksel semi-transparan dalam gambar yang dihasilkan akan mempertahankan warna. (Karena piksel ini setengah transparan, mungkin tidak jelas, tetapi hasil akhirnya tidak seperti yang diharapkan.)
penjelasan yang cukup bagus untuk mencapai tujuan saya, ketika saya menggunakan perintah kedua yang membuat gambar saya lebih gelap daripada gambar skala abu-abu yang sebenarnya. Sebenarnya, tujuan saya untuk mencapai nada warna yang sama yang ada dalam skala abu-abu selain transparansi itu seperti yang diharapkan. ada ide untuk mencapai itu?
Hardik Patel
itu sangat berguna, terima kasih! :) senang saya tidak harus mencari tahu sendiri
Sam Watkins
Aku cinta kamu!!!!!!
mescarra
Jenis komentar seperti itu mungkin lebih baik dikirim kepada saya melalui saluran ini: okcupid.com/profile/zrajm :)
zrajm
1
tidak yakin mengapa, tetapi dengan versi saat ini (ImageMagick 7.0.7-21) saya hanya mendapatkan gambar putih / hitam pekat sebagai hasilnya, tanpa saluran alfa. Saya menyalin baris perintah kata demi kata, hanya mengubah jalur input / output file. Mungkin mereka membuat beberapa perubahan yang tidak kompatibel.
Nama Tampilan
0
Dengan ImageMagick 7.0, jawaban di atas tidak lagi. Tapi Anda bisa menggunakan:
Dengan ImageMagick 7.0, jawaban di atas tidak lagi. Tapi Anda bisa menggunakan:
konversi source.png -channel rgb -fx '#fff' result.png
Aka, isi saluran RGB dengan kosong, dan biarkan alpha seperti sebelumnya.
sumber
Dengan imagemagick 7, saya merasa perlu untuk menentukan
-channel RGB
sebelum-fx
, jika tidak, Anda mendapatkan gambar hitam pekat, seperti:Dan meniadakan berguna jika Anda ingin hitam menjadi buram dan putih menjadi transparan:
sumber