29Jun

Menemukan Gambar PNG Lebih Besar daripada Pixel Melalui Shell Linux

click fraud protection

Saat Anda mencoba mengubah desain situs web Anda, Anda harus memperhatikan lebar gambar dalam konten artikel Anda. Saya punya screenshot yang sangat besar pada sebagian besar artikel yang saya tulis, jadi jika saya ingin meningkatkan sidebar, penting untuk mencari tahu gambar mana yang akan terlalu lebar agar sesuai dengan desain baru.

Karena saya seorang programmer, akan mudah bagi saya untuk menulis sebuah aplikasi kecil untuk melakukan ini, tapi itu membuat saya mulai berpikir. .. mengapa saya tidak bisa melakukan ini pada command line Linux?

Hal pertama yang saya tahu adalah bahwa gambar PNG menampilkan data ukuran saat Anda menjalankan perintah "file" pada file tersebut:

$ file image3.png
image3.png: Data gambar PNG, 613 x 657, 8-bit / colorRGBA, non-interlaced

Sangat berguna karena 99% gambar di situs ini ada dalam format PNG.Jadi sekarang untuk membuangnya dalam satu lingkaran untuk semua file di direktori upload saya:

$ untuk f di *. png; lakukan file $ f; lakukan

instagram viewer

image.png: data gambar PNG, 631 x 185, 8-bit / colorRGBA, gambar
non-interlaced image1.png: Data gambar PNG, RGBA 631 x 96, 8-bit / warna, gambar
non-interlaced image10.png: Data gambar PNG, 375 x 395, RGBA 8-bit / warna,intergaced
image11.png: Data gambar PNG, 484 x 241, 8-bit / color RGBA,
non-interlaced -snipped-

Ini lebih berguna, tapi saya harus menarik data ke Excel atau aplikasi serupa diUntuk mengurutkan data, jadi saya memutuskan untuk menggunakan perintah "cut" linux untuk menarik hanya kolom width.

Anda akan melihat parameter -f5 mengatakan cut untuk mengambil kolom kelima, dan -d \ dengan spasi setelah ia mengatakan cut untuk menggunakan spasi sebagai pembatas. Karakter slash \ adalah karakter pelarian untuk memberi tahu shell untuk menggunakan ruang sebagai karakter, dan bukan sebagai spasi.

$ untuk f dalam *. png; lakukan file $ f | cut -f5 -d \; lakukan

631
631
375
484
-snipped-

Output yang tidak sepenuhnya berguna, bukan? Mari kita dorong itu melalui sebuah bash jika pernyataan, dan kemudian hanya tampilkan output dari perintah file bila lebarnya lebih besar dari 600 piksel.

Perhatikan tanda `(backtick) di sekitar" file $ f |potong. .. ", yang menunjukkan bahwa perintah di dalam` akan diproses sebagai keluaran tunggal dan dimasukkan ke dalam pernyataan jika, di mana kita menggunakan a-gt( lebih besar dari).Perhatikan juga bahwa Anda memerlukan spasi di kedua sisi kurung []

untuk f dalam *. png; lakukan jika [`file $ f |potong -f5 -d \ `-gt 600];kemudian file $ f; fi; dilakukan

image.png: data gambar PNG, 636 x 185, 8-bit / color RGBA, gambar
non-interlaced image1.png: Data gambar PNG, 631 x 96, 8-bit / color RGBA, data citra PNG non-interlaced image6.png: data gambar PNG, 638 x 340, 8-bit / color RGBA, gambar
non-interlaced image18.png: Data gambar PNG, 608 x 448, 8-bit / color RGBA, non-interlaced
-snipped-

Sekarang kita memiliki daftar semua file yang berukuran lebih besar dari 600 piksel. Anda bisa menyesuaikan "file $ f" pada akhirnya hanya menggemakan namafile jika Anda perlu menyalin atau memindahkannya ke tempat lain:

untuk f di *. png; lakukan jika [`file $ f |potong -f5 -d \ `-gt 600];kemudian echo $ f; fi; done

image.png
image1.png
image17.png
image18.png
-snipped-

Shell Linux sangat kuat! Solusi ini tidak terlalu praktis untuk semua orang, tapi ada baiknya mengetahui cara bekerja dengan shell sehingga Anda bisa menyelesaikan tugas seperti ini bila Anda membutuhkannya.