Saya mencari cara untuk mengubah DPI pada file gambar PNG. Menggunakan ImageMagick ini mudah:
$ convert -density 150 -units pixelsperinch file.png file.png
Masalahnya adalah bahwa saya akan menjalankan perintah ini dari aplikasi saya, berjalan pada banyak VM, yang tidak menginstal ImageMagick. Saya bisa mendorong paket pemutakhiran ke VM ini, tetapi dalam kasus ImageMagick yang akan menambahkan sekitar 30MB ke bundel pemutakhiran, yang agak terlalu banyak untuk kasus penggunaan saya.
Singkat cerita : apakah ada cara saya bisa mengubah DPI pada file PNG menggunakan alat baris perintah kecil (seperti dalam ukuran paket)?
Secara opsional, mengubah byte dalam file gambar mentah juga tidak apa-apa, jika seseorang tahu di mana mencarinya ...
pHYs
potongan buatan dari PNG yang dibuat di Photoshop.Jawaban:
Apakah 2,10 MB cukup kecil? Jika ya, gunakan NConvert dan perintah batch seperti:
Untuk apa NConvert?
XnView adalah aplikasi berbasis GUI, Anda dapat mengubah dan memanipulasi gambar menggunakan antarmuka pengguna grafis. NConvert memiliki kemampuan yang hampir sama dengan XnView, tetapi merupakan alat baris perintah dan tidak memiliki antarmuka pengguna grafis. Anda dapat menggunakan NConvert dalam skrip Batch atau aplikasi lain dapat menyebutnya.
Tautan yang bermanfaat
sumber
Anda menyebutkan Anda akan menjalankan perintah ini "dari aplikasi Anda," dan ini membuat saya percaya bahwa Anda telah menulis aplikasi ini, atau sedang mempertahankannya. Yang mengatakan, ada ImageMagick API untuk beberapa bahasa, dan Anda bisa menggunakan salah satu dari mereka untuk menambahkan fungsi langsung ke program Anda yang sudah ada. Peningkatan ukuran paket akan tergantung pada bahasa apa aplikasi Anda ditulis dan apakah Anda menautkan perpustakaan secara statis atau dinamis, tapi saya membayangkan itu akan secara signifikan lebih kecil dari peningkatan 30 MB.
Opsi lain adalah tidak menyertakan seluruh paket ImageMagick. Anda dapat mengunduh file Zip ImageMagick (yang hanya 13 MB BTW), dan mengekstrak hanya
convert
alat dan dependensinya dan mendistribusikannya ke VM Anda. Ada alat yang disebut Dependency Walker yang dapat Anda gunakan untuk menentukan apa dependensiconvert
alat tersebut.sumber
Gunakan
-size
bendera di program pnmtopng netpbm . Satuan yang digunakan adalah piksel per meter. Contoh berikut akan mengatur newfile.png ke 300dpi.sumber
Nah, Anda berpotensi menggunakan skrip python.
Sumber .
sumber
Baris perintah "convert" Magick Gambar yang tepat untuk ini adalah menggunakan argumen -contoh:
sumber