Apakah ada perintah shell yang mengembalikan ukuran piksel suatu gambar?
Saya mencoba membuat gif animasi mulai dari gif berbeda dengan ukuran berbeda menggunakan convert
(misalnya convert -delay 50 1.gif 2.gif -loop 0 animated.gif
).
Masalahnya adalah bahwa konversi hanya tumpang tindih gambar menggunakan ukuran gambar pertama sebagai ukuran animasi gif, dan karena mereka memiliki ukuran yang berbeda hasilnya sedikit berantakan, dengan bit dari frame lama ditampilkan di bawah yang baru.
Jawaban:
menemukan solusi
identify
:, bagian dari paket imagemagick, melakukan apa yang saya butuhkansumber
identify imagename.ico
?Like todour.ico[0] ICO 32x32 32x32+0+0 4-bit sRGB 0.000u 0:00.000
todour.ico[1] ICO 16x16 16x16+0+0 4-bit sRGB 0.000u 0:00.000
todour.ico[2] ICO 48x48 48x48+0+0 8-bit sRGB 0.000u 0:00.000
Daripada mem-parsing output
identify
dengan mata, atau dengan utilitas teks, Anda dapat menggunakan-format
opsi untuk menampilkan lebar dan tinggi dalam format apa pun yang paling cocok untuk Anda. Sebagai contoh:Sebuah daftar properti gambar yang Anda dapat output yang dapat ditemukan di halaman ini , tapi untuk pertanyaan di sini, tampaknya semua yang Anda butuhkan adalah
%w
dan%h
, yang memberikan lebar dan tinggi gambar itu, masing-masing, dalam piksel.Fleksibilitas yang diberikan oleh
-format
saya sangat berguna bagi saya dalam menemukan gambar terbesar dalam hal piksel, dengan menghasilkan%[fx:w*h]
sejumlah gambar dan menyortir hasilnya.Anda mungkin ingin menentukan
-ping
opsi jika Anda memproses banyak gambar, menggunakan pelarian yang lebih rumit, dan ingin memastikan program tidak membuang waktu memuat seluruh gambar. Dengan lolos sederhana,-ping
harus menjadi default. Informasi lebih lanjut tentang pilihan antara-ping
dan+ping
dapat ditemukan di sini .sumber
Anda cukup menggunakan perintah "file" untuk mendapatkan informasi yang Anda butuhkan:
sumber
file taylor-swift-money-makers-990.jpg
->taylor-swift-money-makers-990.jpg: JPEG image data, JFIF standard 1.01, comment: "CREATOR: gd-jpeg v1.0 (using IJ"
Gunakan
identify
untuk melihat ukuran:Ekstrak nilai melalui
cut | sed
, dari bidang 3:Tetapkan ke variabel:
sumber
Keduanya
display
danfile
sangat lambat, dan memiliki potensi untuk membawa bahkan sistem yang cukup mampu berlutut berurusan dengan banyak file. Tes kecil:Dengan hanya membaca byte yang diperlukan, operasi ini dapat dipercepat secara signifikan.
Ini adalah pngsize:
Metode ini jauh lebih cepat daripada menggunakan perpustakaan yang memuat PNG ke depan, ke belakang dan ke samping hanya untuk mendapatkan ukuran gambar: P (Pertimbangkan kode dengan hati-hati sebelum memberi makan itu direktori yang penuh dengan PNG sewenang-wenang tentu saja.)
Menggunakan kode inet.h untuk htonl () ke de- endian -ize header byte pemesanan.
sumber
Anda juga dapat mencoba GraphicsMagick , yang merupakan fork ImageMagick yang digunakan pada misalnya Flickr dan Etsy:
Ini lebih cepat daripada identifikasi ImageMagick (dalam tes saya sekitar dua kali).
sumber
Ini adalah cuplikan bermanfaat (saya tidak menulis) yang mengembalikan dimensi untuk setiap png dan jpg di folder:
sumber
Bagi yang menyukai saya yang menginginkan ukuran dalam megapiksel:
sumber