Apakah ada yang tahu cara untuk memeriksa file grafik (khususnya JPEG, GIF, dan PNG) untuk korupsi (lebih disukai dengan cara otomatis)?
Penjelasan:
Beberapa hari yang lalu, sebuah perintah tidak berfungsi dengan benar dan berakhir dengan menghapus ribuan file grafik dari volume FAT32 yang praktis kehabisan ruang. Saya telah menggunakan beberapa program pemulihan file / foto yang berbeda, tetapi secara alami, mereka terbatas pada seberapa banyak mereka dapat pulih (walaupun untungnya volume memiliki cluster 8KB, yang agak membantu).
Bagaimanapun, beberapa file yang lebih besar, yang terfragmentasi, sekarang rusak. Beberapa dari mereka bahkan bukan file nyata sama sekali (perangkat lunak pemulihan hanya membuang cluster yang ditunjukkan oleh entri direktori yang sekarang ditimpa), sementara yang lain rusak karena fragmentasi.
Selain itu, karena beberapa format gambar menyematkan versi gambar yang lebih kecil sebagai thumbnail, pemindaian thumbnail untuk korupsi tidak dapat diandalkan karena mungkin utuh sementara file yang sebenarnya (yaitu, gambar ketika dilihat ukuran penuh), bisa rusak.
Berikut adalah beberapa contoh:
Ini yang kedua. Sangat rusak sehingga tidak menampilkan apa pun.
(Yang ketiga bahkan tidak akan diunggah karena bahkan tidak memiliki tajuk yang benar!)
sumber
Jawaban:
Karena saya menemukan ini ketika mencoba menjawab pertanyaan yang sama saya akan menambahkan solusi hebat yang saya temukan:
Peggy yang buruk
Penggunaan
Dari menu pilih
File > Scan
dan kemudian gunakan dialog file untuk menelusuri ke folder di mana gambar berada. Program kemudian akan mulai memindai folder dan semua subfolder untuk gambar (.jpg, .png, .bmp, .gif). Jika Anda ingin memindai banyak gambar, ini akan memakan waktu, karena program ini perlu memuat dan mem-parsing file gambar sepenuhnya, jadi Anda mungkin ingin menjalankannya semalaman.Saat memindai, itu akan menampilkan persentase kemajuan di bilah status. Gambar apa pun yang ditemukannya yang tidak sempurna akan muncul langsung dalam daftar. Jika Anda mengeklik gambar apa pun pada daftar, itu akan menampilkan pratinjau seperti apa gambar itu. Cukup sering gambar hanya akan memiliki masalah kecil dengan format file dan gambar akan tetap terlihat baik-baik saja. Lain kali gambar tidak akan merender sama sekali dan pratinjau akan menjadi hitam. Terkadang gambar akan rusak dan Anda akan melihat sesuatu seperti pada tangkapan layar di atas.
Trik yang sangat berguna adalah klik pada tajuk kolom
Reason
dan gambar akan diurutkan berdasarkan seberapa parah mereka rusak (mis. Semua format file buruk yang masih dirender dengan benar akan pindah ke bagian bawah membiarkan Anda fokus pada kasus yang lebih serius) .Juga jika pemindaian pertama telah selesai dan Anda memulai pemindaian lain, hasilnya hanya akan ditambahkan ke daftar. Jadi, jika Anda memiliki banyak folder berbeda dengan gambar, Anda dapat memindai secara berurutan tanpa daftar dihapus saat Anda memulai pemindaian baru. Jika Anda ingin daftar dihapus, gunakan menu konteks dan klik
Clear list
.Tautan
Unduhan untuk Windows, Linux dan OS X dapat ditemukan di sini:
https://www.coderslagoon.com
Kode sumber ada di sini:
https://github.com/llaith/BadPeggy
sumber
Coba opsi jpeginfo '
-c
' untuk file JPEG Anda.Saya telah melihat korupsi yang Anda tunjukkan terjadi pada kartu memori buruk juga.
Apa yang Anda inginkan harus dimungkinkan dan tersedia, periksa Korupsi File Grafik ;
bagian dari Ensiklopedia online Format File Grafik .
Juga lihat Pemeriksaan Integritas File di Pengantar Dasar untuk Fitur PNG .
Anda mungkin tertarik dengan pertanyaan Stackoverflow ini,
Bagaimana cara saya memeriksa secara terprogram apakah suatu gambar (PNG, JPEG, atau GIF) rusak ?
Pembaruan : Source tarball untuk versi 1.6.1 oleh Timo Kokkonen .
Anda harus dapat membangun biner untuk mesin Anda.
sumber
jpeginfo -c *.JPG | ag (WARNING|ERROR)
bekerja untuk sayaProgram identifikasi ImageMagick akan memberi tahu Anda jika gambar rusak. Pengujian loop 'for i in find' untuk kode tidak ada-0 dari identifikasi akan memungkinkan Anda skrip pengujian dengan mudah untuk membuang daftar file yang rusak atau rusak. Ini bekerja pada Windows dengan PowerShell juga.
Kode berikut dengan perubahan untuk jalur Anda berfungsi dengan baik di PowerShell
sumber
identify
dapat menampilkan data JPEG yang rusak dengan-verbose
, biasanya tidak ditampilkan.Hal ini dapat dilakukan dengan menggunakan Python Imaging Library ini
.verify()
perintah . [1]Untuk menjalankan ini di Windows, instal Python (saya menginstal rilis terbaru Python 2), dan kemudian instal Pillow (garpu Python Imaging Library (PIL)). Kemudian, salin kode jpeg_corrupt.py [2] dan simpan kontennya ke file .PY, misalnya jpeg_corrupt.py.
Perhatikan bahwa saya mengubah baris kode berikut di jpeg_corrupt.py :
self.globs = ['*.jpg', '*.jpe', '*.jpeg']
menjadi
self.globs = ['*.jpg', '*.jpe', '*.jpeg', '*.png', '*.gif']
ini sehingga file .PNG dan .GIF akan dipindai juga.
Kemudian dapat dieksekusi melalui prompt perintah Windows (cmd.exe) seperti ini:
C:\Python27\python.exe "C:\Directory containing the .PY file\jpeg_corrupt.py" "C:\Directory of folder to be scanned"
Bagian pertama dari perintah, ' C: \ Python27 \ python.exe ', mungkin berbeda tergantung pada versi Python yang Anda instal dan direktori tempat Anda menginstalnya. Dalam contoh saya, ini adalah direktori instalasi default Python 2.7.
Seharusnya memindai semua gambar JPG, GIF dan PNG di direktori yang ditentukan dan semua subdirektori. Ini akan menampilkan output jika mendeteksi file gambar yang rusak.
Aku berlari ini pada gambar sampel OP dan itu memberi pesan kesalahan ini:
...\YcB9n.png: string index out of range
.Kode juga dapat dimasukkan dalam file skrip .BAT, sehingga Anda dapat dengan mudah menjalankannya direktori yang ditentukan tanpa perlu menggunakan command prompt:
Sumber:
[1]: Jawab di Stack Overflow - "Bagaimana cara saya memeriksa secara terprogram apakah suatu gambar (PNG, JPEG, atau GIF) rusak?" oleh ChristopheD
[2]: Komentar oleh Denilson Sá dalam jawaban SO yang ditautkan dalam [1]
sumber
Saya telah memodifikasi kode dari jawaban galacticninja untuk melakukan apa yang diinginkan OP. Ini dijalankan dengan cara yang sama, namun itu akan memindahkan file ke folder catch di
C:\
direktori root , bukan hanya daftar gambar pada command prompt.Anda dapat menemukan kode saya yang dimodifikasi pada Pastebin atau di bawah:
sumber
Instal imagemagick, jika Anda menggunakan Mac Anda dapat menggunakan Homebrew.
Maka Anda dapat menggunakan skrip Python kecil ini.
Ganti
/Your/Path/To/Files/
dan batalkan komentar pada baris terakhir jika Anda ingin menghapus gambar yang rusak.sumber
Gunakan
identify
dari paket ImageMagick.Contoh contoh:
Dan perintah berikut akan mengidentifikasi semua file JPEG yang rusak di folder saat ini:
sumber
Jika Anda memasang Perl, Anda dapat menggunakan skrip ini. Anda perlu menyimpan daftar file untuk memeriksa f.txt sebelum Anda menjalankan skrip. Anda dapat membuat daftar ini menggunakan Irfanview. (muat semua jempol dari subfolder dan simpan dalam txt). Daftar file yang baik disimpan di okf.txt dan file yang rusak terdaftar di brokenf.txt.
=====================
sumber
Skrip open source Pyhton saya memeriksa integritas media memeriksa integritas gambar, dan file video / audio. Menggunakan modul Bantal, pembungkus ImageMagick dan FFmpeg untuk mencoba mendekode file.
Pillow image.verify tidak melihat semua cacat (misalnya, mengabaikan pemotongan) karena alasan ini saya juga melakukan manipulasi image / decode +.
sumber
Posting blog ini berisi daftar lima alat yang dapat (mendeteksi dan) memperbaiki file gambar yang rusak. Satu-satunya gratis di antara mereka adalah Perbaikan File 2.1.
sumber