Saya punya beberapa gambar PNG dengan transparansi, dan saya perlu membuat versi dengan lapisan gambar tersusun pada latar belakang putih. Saya sudah mencoba berbagai hal dengan operasi "konversi" Image Magick, tetapi tidak ada yang terjadi sama sekali atau saya mendapatkan kesalahan. Saya tidak ingin pergi ke bentuk JPG perantara karena saya tidak ingin artefak. Tentu saja mudah untuk melakukan ini di Gimp atau Photoshop atau apa pun, tetapi saya benar-benar lebih suka skrip dari baris perintah karena ada banyak hal ini.
Contoh dari perintah Image Magick yang tidak berfungsi adalah:
convert img1.png -background white -flatten img1-white.png
Itu menghasilkan kesalahan.
Terima kasih!
png
imagemagick
alpha-transparency
Runcing
sumber
sumber
Jawaban:
Ini bekerja untuk saya:
Referensi dokumentasi:
-flatten
opsi baris perintah-layers
opsi baris perintah (-flatten
setara dengan-layers flatten
)sumber
-flatten
. Ini akan meratakan halaman menjadi satu halaman.mogrify -flatten *.png
berjaga-jaga, jangan lupa untuk melakukan backup. Info lebih lanjut di sini: imagemagick.org/script/mogrify.phpContoh:
Silakan ganti
white
dengan warna lain yang Anda inginkan. Dokumentasi Imagemagick mengatakan ini tentang-alpha remove
operasi:sumber
-background white
tidak diperlukan (kemungkinan untuk warna lain sekalipun).-alpha off
.convert image.png -background white -alpha off white.png
menghasilkan gambar dengan latar belakang hitam.convert image.png -background "#00ff33" -alpha off 00ff33.png
menghasilkan latar belakang hitamMeratakan gambar dan menerapkan gambar latar lurus di ImageMagick
Namun, urutan perintah sangat penting
Untuk menerapkan latar belakang apa pun pada gambar transparan dan meratakannya, pertama-tama menerapkan latar belakang daripada meratakannya. Kebalikannya tidak bekerja.
sumber
Satu-satunya yang bekerja untuk saya adalah campuran dari semua jawaban:
sumber
... -background "#010203" ...
daripada menggunakan putih.mogrify -background white -flatten */*.png
-alpha remove
adalah apa yang terjadi pada sayainilah cara mengganti gambar yang sama di semua folder dalam direktori dengan warna putih alih-alih transparan:
mogrify -background white -flatten */*.png
sumber
Menggunakan -flatten membuat saya benar-benar marah karena -flatten dalam kombinasi dengan crop mogrify dan mengubah ukuran tidak berfungsi. Cara resmi dan bagi saya satu-satunya cara yang benar adalah "menghapus" saluran alfa.
-alpha hapus -alpha off (tidak diperlukan dengan JPG)
Lihat dokumentasi: http://www.imagemagick.org/Usage/masking/#remove
sumber
convert imgWithTranspBkg.png -alpha remove -alpha off bkg.jpg resultImg.png
Bagian Alpha Remove pada Panduan Penggunaan ImageMagick menyarankan penggunaan
-alpha remove
opsi, misalnya:...menggunakan
-background
warna yang Anda pilih.Panduan menyatakan:
Itu juga menambahkan catatan:
Jadi, jika Anda tidak membutuhkan saluran alfa, Anda dapat membuat ukuran gambar output Anda lebih kecil dengan menambahkan
-alpha off
opsi, misalnya:Ada lebih banyak rincian tentang teknik lain yang sering digunakan untuk menghapus transparansi yang dijelaskan dalam Menghapus Transparansi dari Gambar .
Termasuk dalam bagian itu menyebutkan peringatan penting untuk penggunaan
-flatten
sebagai teknik untuk menghilangkan transparansi:Jadi, jika Anda mengonversi beberapa gambar sekaligus, misalnya membuat thumbnail dari file PDF,
-flatten
tidak akan melakukan apa yang Anda inginkan (itu akan meratakan semua gambar untuk semua halaman menjadi satu gambar). Di sisi lain, menggunakan-alpha remove
teknik masih akan menghasilkan banyak gambar, masing-masing memiliki transparansi dihapus.sumber
Tampaknya perintah Anda benar sehingga masalahnya mungkin karena tidak adanya dukungan untuk PNG (). Anda dapat memeriksa
convert -list configure
atau hanya mencoba yang berikut:sumber
libpng12-0
terinstal dan berfungsi. Bisakah Anda melihat png jika Anda menjalankan ini?convert -list configure | grep \png
Ini bukan jawaban untuk pertanyaan Anda, tetapi saya menemukan pertanyaan Anda saat mencoba mencari cara menghapus saluran alpha, jadi saya memutuskan untuk menambahkan jawaban ini di sini:
Jika Anda ingin menghapus saluran alpha menggunakan imagemagick, Anda dapat menggunakan perintah ini:
sumber
Yah sepertinya keputusan saya untuk menginstal "grafis magick" di atas "gambar magick" memiliki beberapa tepi yang kasar - ketika saya menginstal ulang "gambar ajaib" lama yang asli, maka perintah di atas berfungsi dengan baik.
sunting , lama kemudian - Suatu hari saya akan memeriksa untuk melihat apakah "grafik ajaib" telah memperbaiki masalah ini.
sumber
Saya membutuhkan: keduanya
-alpha background
dan-flatten
, atau-fill
.Saya membuat PNG baru dengan latar belakang transparan dan titik merah di tengah.
convert image.png -background green -alpha off green.png
gagal: menghasilkan gambar dengan latar belakang hitamconvert image.png -background green -alpha background -flatten green.png
menghasilkan gambar dengan latar belakang hijau yang benar.Tentu saja, dengan file lain yang saya ganti namanya
image.png
, gagal melakukan apa pun. Untuk file itu, saya menemukan bahwa warna piksel transparan adalah "# d5d5d5" jadi saya mengisi warna itu dengan hijau:convert image.png -fill green -opaque "#d5d5d5" green.png
mengganti piksel transparan dengan warna hijau yang benar.sumber
convert image.png -background green -alpha background -alpha off green.png
atauconvert image.png -background green -alpha background -alpha remove green.png
atauconvert image.png -background green -flatten green.png
Opsi baris non-perintah: buka file PNG di Windows Paint dan klik Simpan.
sumber
ini menciptakan gambar hanya menempatkan 1 dengan transparansi di atas ke-2
awalnya menemukan tip di posting ini
sumber
Untuk benar-benar menghapus saluran alpha dari file, gunakan opsi alpha off :
sumber
Saya melihat pertanyaan dan jawaban ini yang sangat membantu saya, tetapi kemudian saya harus melakukannya untuk banyak file, Jadi jika Anda memiliki banyak gambar (gambar PNG) dalam satu folder dan Anda ingin melakukannya untuk semua:
sumber
Ini -alpha off, BUKAN -alpha hapus! Unggah toko aplikasi iOS gagal ketika ada saluran alfa di ikon apa pun !!
Inilah cara melakukannya: mogrify -alpha off * .png
sumber