Pertanyaan Bagaimana saya bisa mengonversi folder .pngs ke .jpg sementara mengatur warna latar belakang?


Saya memiliki folder file png yang memiliki latar belakang transparan. Saya ingin mengonversinya dari baris perintah dan mempertahankan latar belakang transparan gambar.

Saya sangat menghargai bantuan.

Karena jpg tidak mendukung transparansi, jadi bagaimana saya bisa menentukan nilai heksa warna latar belakang jpg keluaran? Sekarang ini menjadi default #ffffff? Saya telah mencoba skrip ini, tetapi memberikan output jpgs white backgrounds:

mogrify -quality 100 -format jpg *.png

Memperbarui

Saya membuat file png ini di inkscape. Saya harus menyebutkan bahwa tujuan saya dalam mengubah pngs ini menjadi jpgs adalah untuk menyingkirkan tepi bergerigi pada objek melingkar atau sudut. Pngs saat ini memiliki tepi bergerigi dan saya membaca bahwa mengubahnya menjadi jpg dapat memecahkan masalah ini. Namun mengubah melalui metode yang diuraikan dalam jawaban Christian Skjødt memberikan gambar tepi yang lebih buruk bergerigi. Apakah ada cara yang saya dapat mengubah pngs ke jpg dan juga menggunakan anti-aliasing atau mungkin teknik lain untuk menyingkirkan tepi bergerigi? Terima kasih untuk bantuannya.


9
2017-08-26 08:32


asal


Cukup sulit untuk menjawab pertanyaan Anda jika itu berubah sepanjang waktu ... Untuk referensi di masa mendatang: Cobalah untuk memasukkan apa yang ingin Anda capai dalam pertanyaan Anda dari awal. Re "update 2" Anda: Apakah "jagge" hanya hasil dari resolusi yang Anda pilih? Bagaimana jika Anda meningkatkan resolusi (angka DPI dalam dialog "Ekspor bitmap ...")? - Marcel Stimberg


Jawaban:


Untuk meratakan tepi, Anda bisa membuat PNG 10x lebih besar dari ukuran target Anda, lalu ubah ukurannya dengan anti-aliasing ke JPG. Saya telah melakukan ini menggunakan Python dan Perpustakaan Pencitraan Python untuk efek yang baik, tapi saya tidak yakin bagaimana melakukannya menggunakan alat lain.


3
2017-08-26 22:51





Format JPEG tidak mendukung transparansi - karena itu menjaga latar belakang transparan tidak mungkin jika Anda ingin (atau harus) menggunakan format JPEG. Lihat Wikipedia untuk ikhtisar kemampuan berbagai format gambar.

Perhatikan bahwa JPEG 2000 memang mendukung transparansi, tetapi jauh lebih umum daripada format JPEG. Itu tergantung pada use case Anda apakah ini adalah alternatif yang layak.


28
2017-08-26 08:55



Saya mungkin salah, tetapi OP bertanya tentang pengaturan untuk apa warna setiap area transparan dibuat. Mereka sedang dibuat putih, tetapi OP bisa menggunakan warna biru, misalnya. - hexafraction


Untuk pertanyaan kedua Anda: 

Untuk menentukan warna latar belakang saat mengonversi gambar Anda, Anda dapat menggunakan -fill pilihan:

mogrify -quality 100 -format jpg -fill "#FF0000" -opaque none *.png

Menggunakan -background memberikan hasil yang serupa. Jangan lupa -opaque none.


15
2017-08-26 09:51



Hai, terima kasih atas bantuannya. Apakah ada cara yang saya dapat antialias output jpeg melalui perintah ini? Lihat pembaruan 2 di atas untuk konteks tambahan. Terima kasih. - James


Maaf tidak ada jalan, jpeg format tidak mendukung alpha channel jadi Anda tidak bisa memiliki transparansi.


4
2017-08-26 08:58





tergantung pada apa yang Anda coba lakukan dengan gambar, dimungkinkan untuk menempatkan saluran alfa ke gambar grayscale yang terpisah atau bitmask, dan program yang menggunakan gambar akan menerapkan gambar tambahan sebagai nilai transparan / tembus cahaya . Meskipun akhirnya lebih baik untuk memodifikasi program sehingga mendukung png alpha.


0
2017-08-26 10:47